2014-09-19 12 views
5

Non riesco a trovare un vero e proprio si o no a questo nella mia ricerca. In Android, c'è un modo per usare un'istruzione condizionale in caso-switch? Ad esempio, con l'età, essendo un valore int:È possibile utilizzare istruzioni condizionali in caso di interruzione in Android?

switch (age){ 
case (>79): 
// Do this stuff 
break; 
case (>50): 
// Do this other stuff 
break; 
etc, etc 

Ho provato diversi modi per codificare questo (completamente riprese al buio) e venire con errori di compilazione, e ho anche provato un nidificato IF , ma non supporta l'interruzione, quindi la logica si interrompe e finisce anche eseguendo il codice ELSE più in basso nel nesting. Mi sento come se la mia borsa migliore fosse la mia migliore scommessa, ma non riesco a trovare un esempio della sintassi corretta per quello che sto cercando di fare! Qualsiasi aiuto sarebbe apprezzato. Tutti gli esempi che trovo usano solo case-switch per alcune cose come se fosse un 1, fai questo, se è un 2 fai così, ma senza fare 100 case statement da verificare contro l'età, non sono sicuro di come funzionerà Questo.

+0

Stai facendo questo attraverso un ciclo? Prova a pubblicare più codice. – shinjw

+0

Si potrebbe voler guardare http://stackoverflow.com/questions/389741/continue-keyword-in-java. Questo non è un buon posto per usare l'interruttore. – shinjw

risposta

5

No. Non è possibile fare questo,

switch (age){ 
case (>79): 
    // Do this stuff 
    break; 
case (>50): 
    // Do this other stuff 
    break; 
} 

È bisogno di un if e else,

if (age > 79) { 
// do this stuff. 
} else if (age > 50) { 
// do this other stuff. 
} // ... 
+0

L'unico problema quindi è che diciamo che l'età è 51, farà 50 anni se, ma anche 45 anni se, 35 anni se, ecc. Ho provato ad usare "break"; ma questo, a quanto pare, non funziona con un if annidato. Quindi come fai a fare solo quello senza tutti quelli inferiori? – Robert

+0

Esattamente come ho detto nella mia risposta, non entrerà nel blocco 'else' se viene inserito il blocco' if'. Questo non è un 'switch'. –

+0

Quindi, se ho capito bene, una volta che viene soddisfatta una condizione if, non valuta più tutti gli altri nidificati se si trova in quel blocco di if annidati? Quindi è come se la pausa fosse implicita? – Robert

1

Non è possibile fare questo uso se poi dichiarazione.

if(age > 79) 
{ 
    //do stuff 
} 
else if(age > 50) 
{ 
    //do stuff 
} 
else 
{ 
    /do stuff 
} 

ecc ...

0

Se si utilizza un ciclo che si potrebbe voler guardare What is the "continue" keyword and how does it work in Java?. Questo non è un buon posto per usare l'interruttore.

if(age > 79) 
{ 
    //do stuff 
    continue; // STOP FLOW HERE AND CONTINUE THE LOOP 
} 
else if(age > 50) 
{ 
    //do stuff 
    continue; // STOP FLOW HERE AND CONTINUE THE LOOP 
} 
-1

Non è possibile utilizzare istruzioni condizionali con switch.

Ma puoi farlo con le dichiarazioni if! Se si dispone di un ciclo, è possibile utilizzare continue per interrompere le righe successive e iniziare dall'inizio del ciclo più interno.

if(age>76){ 
    // Code... 
    continue; 
}else if(age>50){ 
    // More Code... 
    continue; 
}else{ 
    // Even more code... 
    continue; 
} 
+0

Le interruzioni in cui cambia l'utente che ha inserito questa domanda inclusa rendono il continuare non necessario. – startoftext

5

Prova questa bella e minimalista approccio

age > 79 ? first_case_method() 
      : age < 50 ? second_case_method() 
      : age < 40 ? third_case_method() 
      : age < 30 ? fourth_case_method() 
      : age < 20 ? fifth_case_method() 
      : ... 
      : default_case_method(); 
+0

Questo non riguarda direttamente la domanda, anche se può essere vista come una risposta valida. Si prega di fornire ulteriori dettagli, poiché la domanda riguarda un'istruzione switch e la risposta fornisce una soluzione if-then-else. – hotzst

+0

@hotzst Come già menzionato dagli altri, non c'è modo di utilizzare istruzioni condizionali nel ciclo di switch java. invece, forse questo modo di gestire la situazione potrebbe essere meno verboso. – Williem

-3

Si può fare. Il codice deve essere leggermente modificato.

public static void main(String[]arguments) 
    { 
     int x=1, age=55; 
     switch(x) 
     { 
     case 1: if((age>=60)&&(age<200)) 
      System.out.println("Senior Citizen"); 
     case 2: if((age>=18)&&(age<60)) 
      System.out.println("Adult"); 
     case 3: if((age>=12)&&(age<18)) 
      System.out.println("Teenager"); 
      break; 
     default : 
      System.out.println("Child"); 
      break; 
     } 
} 
+0

Non funzionerà. Dato che 'x = 1', finirai sempre con' caso 1'. – cpburnz

+0

Questo non è giusto. Non ho usato una pausa dopo ogni caso. Quindi verifica ogni caso e non solo il caso 1. – Vikram

+1

Mi è mancato. Ma allora qual è lo scopo dell'istruzione switch? In effetti è solo una catena di affermazioni. – cpburnz

Problemi correlati