簡體   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