2012-12-08 4 views
18

Nell'esperienza 1 mese ho avuto con qualsiasi linguaggio di programmazione, ho assunto che switchcase condizioni avrebbero accettato qualsiasi cosa in parentesi come un coso controllo booleano, vale a dire questi:Come fare un caso con più condizioni?

|| && < > 

sanno che cosa ho significare?

qualcosa come

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

Purtroppo, non sembra funzionare in questo modo. Non posso avere il controllo booleano nel caso dell'interruttore.

C'è un modo per aggirarlo?

A proposito, mi dispiace terribilmente se suono confuso. Io non so bene i nomi per tutto in questa lingua ancora: X
Tutte le risposte hanno apprezzato

+0

"controllo booleano thingamajig questi" sono chiamati "operatori", e "TIS Java" viene chiarito dal 'java' tag è stato aggiunto. Inoltre, l'intero snippet di codice che hai postato non è valido (Java non ha un 'caso'), e' {'e'} 'sono collocati in modo errato). È meglio pubblicare * codice reale * con cui stai riscontrando problemi; il più delle volte l'atto di inventare il codice fittizio nasconde il problema o aggiunge problemi aggiuntivi che non sono nell'originale. Forse sarebbe utile una ricerca su Google: ho provato 'case statement Java' e il [primo risultato] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html) è stato utile. –

+0

Se la risposta è corretta, scegli come accettato – Roger

+0

Operatori. Fatto. E non sapevo davvero se qualcuno avesse persino guardato i tag, quindi "tiz java". Quel frammento era abbastanza per mostrare quello che volevo chiedere, non è vero? Grazie per le correzioni btw :) – AfroMan

risposta

39

è possibile ottenere un OR per casi come questo:

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

casi sono come un "goto" e più gotos possono condividere la stessa riga per iniziare l'esecuzione.

+0

Wow. Risposta rapida. Funziona come un fascino. Grazie! – AfroMan

+13

Una risposta veloce non è sempre una buona cosa - basta chiedere alla mia ragazza:/ – Bohemian

+0

Il trucco più intelligente che abbia mai visto qui. Deve +1. E altri ragazzi chiedono qui in [un'altra domanda] (http://stackoverflow.com/questions/5086322/java-switch-statement-multiple-cases/39123659) e ppl dice che è impossibile. Ho citato la tua risposta lì. – FaithReaper

3

Ogni caso è normalmente seguito da una "interruzione"; dichiarazione per indicare dove l'esecuzione dovrebbe terminare. Se ometti la "pausa", l'esecuzione continuerà. È possibile utilizzare questo per supportare più casi che dovrebbero essere trattati allo stesso modo:

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

Sì, ho notato la rottura quando ha continuato a passare al caso successivo. Modo intelligente per prendersene cura. Grazie! – AfroMan

6

Si può fare -

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

    // .... 
} 
+0

Grazie per la tua risposta! – AfroMan

1

casi di commutazione sono rami per le valutazioni alternative di una data espressione. L'espressione è indicata nella parentesi dello switch e può essere di tipo byte, short, char e int.

Il corpo di un'istruzione switch è noto come blocco di commutazione. Una dichiarazione nel blocco di commutazione può essere etichettata con una o più lettere o etichette di default . L'istruzione switch valuta la sua espressione, quindi esegue tutte le istruzioni che seguono l'etichetta case corrispondente.

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

+0

Non ho davvero risposto alla domanda (per me) ma ora so fino a che punto posso andare con i tipi di variabili nel caso di commutazione :) Grazie – AfroMan

+0

Nessun problema, notate anche che i casi di switch hanno alcune complicazioni che possono essere dei potenziali trucchi - come il caso "default" alla fine, e ** che passa attraverso ** un caso in un altro se non si usa un 'break' o un' return'. Alcuni linguaggi come Python li hanno esclusi del tutto. http://stackoverflow.com/questions/374239/why-doesnt-python-have-a-switch-statement –