2012-12-08 35 views
18

在1個月的經驗,我曾與任何編程語言,我認爲switchcase條件將接受在括號任何東西作爲一個布爾檢查thingamajig,即 這些:如何做一個具有多個條件的案例?

|| && < > 

知道我意思?

char someChar = 'w'; 
switch (someChar) { 
case ('W' ||'w'): 
    System.out.println ("W or w"); 
} 

可悲的是,似乎沒有這樣的。我不能在開關櫃中進行布爾檢查。

有沒有辦法解決它?

順便說一句,非常抱歉,如果我聽起來令人困惑。我不太知道這種語言的一切名稱尚未:X
任何答案讚賞

+0

由'java'標記您加入「布爾檢查thingamajig這些」被稱爲「運營商」和「TIS的Java」被明確。另外,你發佈的整個代碼片段都是無效的(Java沒有'case'),而'{'和'}'放錯了位置)。最好發佈*真正的代碼*你有問題;大多數情況下,編寫虛構代碼的行爲要麼隱藏了問題,要麼增加了原來不存在的其他問題。也許Google的搜索會有所幫助 - 我嘗試了'case statement Java'並且[first result](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html)很有幫助。 –

+0

如果答案是對的,請選擇 – Roger

+0

運營商。得到它了。我真的不知道是否有人甚至看過標籤,因此「tiz java」。這段代碼足以顯​​示我想問的是不是?感謝修復btw :) – AfroMan

回答

39

可以實現或良這樣的:

switch (someChsr) { 
case 'w': 
case 'W': 
    // some code for 'w' or 'W' 
    break; 
case 'x': // etc 
} 

情況是像「轉到」和多個gotos可以共享同一行開始執行。

+0

哇。快速回復。奇蹟般有效。謝謝! – AfroMan

+13

快速反應並不總是一件好事 - 只要問我的女朋友:/ – Bohemian

+0

這是我見過的最聰明的黑客。必須+1。另外一個人在[另一個問題]中詢問這裏(http://stackoverflow.com/questions/5086322/java-switch-statement-multiple-cases/39123659),並且ppl說這是不可能的。我在那裏引用你的回答。 – FaithReaper

3

每一種情況通常都會有一個「休息」。語句來指出執行應該終止的地方。如果你省略「break」,那麼執行將繼續。你可以用它來支持應相同的方式處理多個案件:

char someChar = 'w'; 
{ 
case 'W': 
    // no break here 
case 'w': 
    System.out.println ("W or w"); 
    break; 
} 
+0

是的,當我繼續看下一個案例時,我注意到了這件事情。聰明的方式來照顧它。謝謝! – AfroMan

6

你可以這樣做 -

switch(c) { 
    case 'W': 
    case 'w': //your code which will satisfy both cases 
       break; 

    // .... 
} 
+0

感謝您的回答! – AfroMan

1

開關的情況下對於給定表達式的替代評估分支。該表達式在切換括號中給出,可以是byte,short,char和int數據類型。

switch語句的主體被稱爲開關塊。交換機模塊中的語句 可以標記一個或多個大小寫或默認的 標籤。 switch語句評估其表達式,然後執行 跟隨匹配大小寫標籤的所有語句。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

+0

沒有真正回答這個問題(對我來說),但我現在知道我可以在開關盒中使用變量類型有多遠:)謝謝 – AfroMan

+0

沒有probs,還要注意開關盒有一些複雜的問題,可能是潛在的問題 - 就像最後的'default'情況一樣,如果沒有使用'break'或'return',則**通過**一個案件進入另一個案例。有些語言如Python已經完全排除了它們。 http://stackoverflow.com/questions/374239/why-doesnt-python-have-a-switch-statement –