繁体   English   中英

带有+ = / - =运算符的Java switch语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM