非常简单的问题,但无法弄清楚。为什么 y 在下面的(Java)代码中计算为 2?
int x = 2;
int y = 2;
switch (x * 2) {
case 4: y += 1;
case 6: y -= 2;
default: y += 1;
}
非常简单的问题,但无法弄清楚。为什么 y 在下面的(Java)代码中计算为 2?
int x = 2;
int y = 2;
switch (x * 2) {
case 4: y += 1;
case 6: y -= 2;
default: y += 1;
}
它从案例 4 下降到案例 6 到默认值,因此它递增(新值:3),递减 2(新值:1)然后递增(新值:2)。
编译器应该已经警告过你失败了,至少如果你使用-Xlint
. 永远不要忽视编译器警告,并且总是编译-Xlint
:)
您忘记添加break
:
int x = 2;
int y = 2;
switch (x * 2) {
case 4:
y += 1;
break;
case 6:
y -= 2;
break;
default: y += 1;
}
您没有在案例后添加中断。所以它执行所有语句。y=y+1-2+1;2
Switch 语句应该是 -
int x = 2;
int y = 2;
switch (x * 2) {
case 4: y += 1;break;
case 6: y -= 2;break;
default: y += 1;
}
那么 y 将是 3
break;
在 switch 语句中,除非您添加语句,否则将执行第一个匹配案例以下的所有案例。
如果您希望 y 成为1
您需要执行的操作:
int x = 2;
int y = 2;
switch (x * 2){
case 4: y += 1;
break;
case 6: y -= 2;
break;
default: y += 1;
}