2015-04-12 19 views
0

我期待我的輸入是三個字符組之一,並且需要根據它屬於哪個組來決定如何處理它。我試圖弄清楚如何定義一個切換多個案例來做到這一點。這是我到目前爲止:在java開關中的多個參數

 while(in.hasNextChar()) 
     { 
     char test = in.nextChar(); 
     List<Signal> out = new List<Signal>(0); 
     switch(test) 
     { 
      case '1','0','x','X': 
       out.add(fromString(test)); 
       break; 
      case ' ','/t': 
       break; 
      default: 
       throw new ExceptionLogicMalformedSignal; 
     } 
     } 
     return out; 
    } 

回答

3

你有句法錯誤。你需要充分利用落空的:

 switch(test) { 
     case '1': 
     case '0': 
     case 'x': 
     case 'X': 
      out.add(fromString(test)); 
      break; 
     case ' ': 
     case '\t': 
      break; 
     default: 
      throw new ExceptionLogicMalformedSignal; 
    } 

的情況只是一個標籤,非常相似,你會用goto使用什麼(這基本上是什麼幕後發生的事情)。這不是一個聲明,因爲它本身沒有做任何事情—它只是一個地址。因此,如果test'0',它可以愉快地繼續通過'x''X'個案來達到實際的語句代碼,因爲這些標籤沒有任何內容。只有break「結束」了一個案例。

實際上,你可以插入情況之間的代碼即使沒有break

switch(test) { 
    case '1': 
     System.out.println("This is printed by case '1'"); 
    case '0': 
     System.out.println("This is printed by both case '1' and case '0'"); 
     break; 
    case 'x': 
    case 'X': 
     System.out.println("This is only printed by the Xs"); 
     break; 
    default: 
     break; 
} 
+0

我不完全知道爲什麼,應該工作,但我還挺看看它是如何做。謝謝你的幫助。 –

+0

@C.J.Coffey你的代碼只是第一個有休息的案例。 – Hristo