Se il tuo programma Java deve scegliere tra due o tre azioni, un se, allora, altro la dichiarazione sarà sufficiente. comunque, il se, allora, altro l'affermazione inizia a sembrare ingombrante quando ci sono diverse scelte che un programma potrebbe dover fare. Ce ne sono solo tanti altro ... se istruzioni che si desidera aggiungere prima che il codice inizi a sembrare disordinato. Quando è richiesta una decisione su più opzioni, utilizzare l'istruzione switch.
Un'istruzione switch consente a un programma di confrontare il valore di un'espressione con un elenco di valori alternativi. Ad esempio, immagina di avere un menu a discesa contenente i numeri da 1 a 4. A seconda del numero scelto, vuoi che il tuo programma faccia qualcosa di diverso:
// supponiamo che l'utente scelga il numero 4
int menuChoice = 4;
switch (menuChoice)
caso 1:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 1.");
rompere;
caso 2:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 2.");
rompere;
caso 3:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 3.");
rompere;
// Questa opzione viene scelta perché il valore 4 corrisponde al valore di
// la variabile menuChoise
caso 4: JOptionPane.showMessageDialog (null, "Hai scelto il numero 4."); rompere;
predefinito:
JOptionPane.showMessageDialog (null, "Qualcosa è andato storto!");
rompere;
Se osservi la sintassi dell'istruzione switch, dovresti notare alcune cose:
1. La variabile contenente il valore che deve essere confrontato viene posizionata nella parte superiore, all'interno delle parentesi.
2. Ogni opzione alternativa inizia con un'etichetta del caso. Il valore da confrontare con la variabile superiore viene dopo, seguito da due punti. Ad esempio, caso 1: è l'etichetta del caso seguita dal valore 1 - potrebbe essere altrettanto facilmente il caso 123: o il caso -9 :. Puoi avere tutte le opzioni alternative di cui hai bisogno.
3. Se si osserva la sintassi sopra, viene evidenziata la quarta opzione alternativa: l'etichetta case, il codice che esegue (ovvero JOptionPane) e un'istruzione break. L'istruzione break segnala la fine del codice che deve essere eseguito. Se guardi, vedrai che ogni opzione alternativa termina con un'istruzione break. È molto importante ricordare di inserire la dichiarazione di rottura. Considera il seguente codice:
// supponiamo che l'utente scelga il numero 1
int menuChoice = 1;
switch (menuChoice)
caso 1:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 1.");
caso 2:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 2.");
rompere;
caso 3:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 3.");
rompere;
caso 4:
JOptionPane.showMessageDialog (null, "Hai scelto il numero 4.");
rompere;
predefinito:
JOptionPane.showMessageDialog (null, "Qualcosa è andato storto!");
rompere;
Quello che ti aspetti è vedere una finestra di dialogo che dice "Hai scelto il numero 1", ma poiché non esiste un'istruzione break corrispondente alla prima etichetta del caso, viene eseguito anche il codice nella seconda etichetta del caso. Questo significa che apparirà anche la finestra di dialogo successiva che dice "Hai scelto il numero 2".
4. È presente un'etichetta predefinita nella parte inferiore dell'istruzione switch. Questo è come una rete di sicurezza nel caso in cui nessuno dei valori delle etichette del caso corrisponda al valore confrontato con esso. È molto utile fornire un modo per eseguire il codice quando non viene scelta nessuna delle opzioni desiderate.
Se ti aspetti sempre che venga scelta una delle altre opzioni, puoi tralasciare l'etichetta predefinita, ma metterne una alla fine di ogni istruzione switch che crei è una buona abitudine. Potrebbe sembrare improbabile che venga mai usato, ma gli errori possono insinuarsi nel codice e può aiutare a rilevare un errore.
Una delle modifiche alla sintassi Java con il rilascio di JDK 7 è la possibilità di utilizzare le stringhe nelle istruzioni switch. Essere in grado di confrontare i valori di stringa in un'istruzione switch può essere molto utile:
String name = "Bob";
switch (name.toLowerCase ())
caso "joe":
JOptionPane.showMessageDialog (null, "Buongiorno Joe!");
rompere;
caso "michael":
JOptionPane.showMessageDialog (null, "Come va, Michael?");
rompere;
custodia "bob":
JOptionPane.showMessageDialog (null, "Bob, mio vecchio amico!");
rompere;
caso "billy":
JOptionPane.showMessageDialog (null, "Afternoon Billy, come stanno i bambini?");
rompere;
predefinito:
JOptionPane.showMessageDialog (null, "Piacere di conoscerti, John Doe.");
rompere;
Quando si confrontano due valori String, può essere molto più semplice se si accerta che siano tutti nello stesso caso. L'uso del metodo .toLowerCase significa che tutti i valori dell'etichetta del caso possono essere in minuscolo.
• Il tipo della variabile da confrontare deve essere un tipo char, byte, short, int, Character, Byte, Short, Integer, String o enum.