我想使用 switch 语句,我的 if 条件是:
if (userInput%2 == 0 || userInput != 0)
我可以从这段代码中得到两种情况来执行不同的操作userInput == 0
和不同的操作吗userInput == 0
case ?:
case ?:
我想使用 switch 语句,我的 if 条件是:
if (userInput%2 == 0 || userInput != 0)
我可以从这段代码中得到两种情况来执行不同的操作userInput == 0
和不同的操作吗userInput == 0
case ?:
case ?:
您不能,因为满足这两个条件的值集重叠。具体来说,所有偶数都满足您的两个条件。这就是为什么如果不首先确定条件的哪一部分优先,就不能执行不同的操作。
您可以在switch
语句中使用 fall-through 小技巧,如下所示:
switch(userInput%2) {
case 0:
// Do things for the case when userInput%2 == 0
...
// Note: missing "break" here is intentional
default:
if (userInput == 0) break;
// Do things for the case when user input is non-zero
// This code will execute when userInput is even, too,
// because of the missing break.
...
}
为什么不直接拆分if
语句
if (userInput%2 == 0) {
// something
}
else if (userInput != 0) {
// something else
}
请注意,测试的顺序很重要,因为所有非零偶数都满足两个测试。