Java 即使其他情况匹配,开关也会转到默认情况
我知道这个问题的答案是-1,但我不明白为什么是-1。有人能帮我弄清楚吗Java 即使其他情况匹配,开关也会转到默认情况,java,Java,我知道这个问题的答案是-1,但我不明白为什么是-1。有人能帮我弄清楚吗 int x = 0; int y = 0; switch (x + 1) { case 0: y = 0; case 1: y = 1; default: y = -1 } 您忘记了打破,因此所有匹配的案例都“失败”: 您需要这样做: switch (x + 1) { case 0: y = 0; break; ^^^^^ case 1: y = 1; break;
int x = 0;
int y = 0;
switch (x + 1) {
case 0: y = 0;
case 1: y = 1;
default: y = -1
}
您忘记了打破,因此所有匹配的案例都“失败”: 您需要这样做:
switch (x + 1) {
case 0: y = 0; break;
^^^^^
case 1: y = 1; break;
^^^^^
default: y = -1
}
您忘记了打破,因此所有匹配的案例都“失败”: 您需要这样做:
switch (x + 1) {
case 0: y = 0; break;
^^^^^
case 1: y = 1; break;
^^^^^
default: y = -1
}
没有break语句,因此当一个case匹配时,将执行该case之后的所有语句
没有break语句,因此当一个case匹配时,该case之后的所有语句都将被执行 在这种情况下,
x+1
为1,因此开关跳到case1
,并将y设置为1。由于在y=1
之后没有break
语句,因此代码会转到下一行,该行将y
设置为-1
在这种情况下,
x+1
为1,因此开关跳到case1
,并将y设置为1。由于您在y=1
之后没有break
语句,因此代码会转到下一行,该行将y
设置为-1
,您需要在每个案例后使用break
s
尝试:
在每个案例之后,您需要
break
s
尝试:
解释
因为即使case
条件匹配,它在执行块后也不会退出开关,而是转到下一个case
(并且默认值
匹配所有条件),所以您应该使用break
语句
示范
解决方案
解释
因为即使case
条件匹配,它在执行块后也不会退出开关,而是转到下一个case
(并且默认值
匹配所有条件),所以您应该使用break
语句
示范
解决方案
调试器的每个case语句后都没有break语句调试器的每个case语句后都没有break语句
int x = 0;
int y = 0;
switch (x + 1) {
case 0: y = 0; break;
case 1: y = 1; break;
default: y = -1;
}
//here y is 0
switch (x + 1) {
case 0: y = 0; //skipped because x+1 == 1
case 1: y = 1; //executed, y now is 1
default: y = -1; //matches all conditions, so after the previous one this one is executed and y is -1 now
}
switch (x + 1) {
case 0: y = 0; break; //skipped because x+1 == 1
case 1: y = 1; break; //executed, y now is 1 and we exit from switch because of break statement
default: y = -1;
}