6

非常简单的问题,但无法弄清楚。为什么 y 在下面的(Java)代码中计算为 2?

int x = 2;
int y = 2;
switch (x * 2) {
    case 4: y += 1;
    case 6: y -= 2;
    default: y += 1;
}
4

4 回答 4

5

它从案例 4 下降到案例 6 到默认值,因此它递增(新值:3),递减 2(新值:1)然后递增(新值:2)。

编译器应该已经警告过你失败了,至少如果你使用-Xlint. 永远不要忽视编译器警告,并且总是编译-Xlint:)

于 2012-09-21T18:56:35.743 回答
3

您忘记添加break

int x = 2;
int y = 2;
switch (x * 2) {
    case 4: 
        y += 1;
        break;
    case 6:
        y -= 2;
        break;
    default: y += 1;
}
于 2012-09-21T18:57:52.407 回答
2

您没有在案例后添加中断。所以它执行所有语句。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

于 2012-09-21T18:57:09.840 回答
1

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; 
} 
于 2012-09-21T19:01:07.743 回答