[英]Java switch statement with += / -= operators
真的很简单的问题,但无法弄清楚这一点。 为什么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
切换声明应该是 -
int x = 2;
int y = 2;
switch (x * 2) {
case 4: y += 1;break;
case 6: y -= 2;break;
default: y += 1;
}
那么y就是3
在switch语句中,除非您添加break;
否则将执行第一个匹配大小写以下的所有情况break;
声明。
如果你希望y为1
你需要做:
int x = 2;
int y = 2;
switch (x * 2){
case 4: y += 1;
break;
case 6: y -= 2;
break;
default: y += 1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.