2015-05-24 167 views
-2
public class SwitchTest { 
    public static void main(String[] args) { 
     System.out.println(「value = 「 + switchIt(4)); 
    } 
    public static int switchIt(int x) { 
     int j = 1; 
     switch (x) { 
      case 1: j++; 
      case 2: j++; 
      case 3: j++; 
      case 4: j++; 
      case 5: j++; 
      default: j++; 
     } 
     return j + x; 
    } 
} 

爲什麼上面的代碼打印8而不是6?這個開關盒是否正確?

+1

你爲什麼期望它是6? –

+0

請解釋你的代碼應該做什麼。 – SuperBiasedMan

+0

是的,輸出是正確的,它正在做你正在做的事情。不管這是你想要做什麼是另一回事,但我會認爲你的灰色問題的錯誤,而不是程序中的錯誤:-) – paxdiablo

回答

5

,當你沒有使用突破,它繼續其他情況下,在第j爲1:

case 4: j++; // j became 2 
case 5: j++; // j became 3 
default: j++; // j became 4 

,如果你希望你的代碼的輸出是6,你可以改變你的代碼是這樣的:

switch (x) { 
    case 1: j++; 
     break; 
    case 2: j++; 
     break; 
    case 3: j++; 
     break; 
    case 4: j++; 
     break; 
    case 5: j++; 
     break; 
    default: j++; 
} 
+1

除了第二個代碼片段中的草率代碼格式:-),這個似乎是正確的答案。 – paxdiablo