從邏輯上講,我認爲答案應該是0,打印出來是2我對switch語句的理解有什麼問題?
public class Switch{
public static void main(String[] args){
int x = 3; int y = 4;
switch (x + 3) {
case 6: y = 0;
case 7: y = 1;
default: y += 1;
}
System.out.print(y);
}
}
這是我會怎樣想的代碼應該運行:
1)添加X + 3回答是6.
2)情況下,6回答6.這導致0是新值6.
3相關),我們忽略大小寫7和默認值,因爲殼體6適應的需要。
4)系統打印出y的新值,該值是0。
這是我錯了,因爲2打印出來。我的思想在哪裏錯了,我對開關語句的理解錯過了什麼?
你錯過了'break'語句。 – 2014-10-18 18:29:11
如果您傳遞'-Xlint'選項,'javac'會警告您這些延遲。 – 2014-10-18 18:29:35
由於您沒有任何'break',您將訪問每個'case'。在第一種情況下,'y'是0,那麼它是1,那麼它是2,這就是返回的值。 – Maroun 2014-10-18 18:30:51