La selezione multipla in Java (IF - ELSEIF e SWITCH)
Se l'algoritmo realizzato per la soluzione di un problema presentasse la situazione mostrata
nella
figura
seguente, ossia tante selezioni doppie annidate, ognuna nel ramo
falso
del blocco di selezione
precedente, la traduzione in Java potrebbe essere quella canonica, derivante dalla traduzione di
ogni
singolo blocco, oppure quella sintetica evidenziata negli esempi di codice che seguono.

// selezioni doppie annidate
// nel ramo falso della selezione precedente
if (<cond1>) {
// sequenza di istruzioni
} else {
if (<cond2>) {
// sequenza di istruzioni
} else {
if (<cond3>) {
// sequenza di istruzioni
} else {
...
if (<condN>) {
// sequenza di istruzioni
} else {
// sequenza di istruzioni
}
}
}
}
come mostrato nel codice seguente.
if (<cond1>) {
// sequenza di istruzioni
} elseif (<cond2>) {
// sequenza di istruzioni
} elseif (<cond3>) {
// sequenza di istruzioni
} ...
elseif (<condN>) {
// sequenza di istruzioni
} else {
// sequenza di istruzioni
}
if (variabile = <valore1>) { // condizione di uguaglianza
// sequenza di istruzioni
} elseif (variabile = <valore2>) { // stessa condizione, ma valore diverso
// sequenza di istruzioni
} elseif (variabile = <valore3>) { // stessa condizione, ma valore diverso
// sequenza di istruzioni
} ...
elseif (variabile = <valoreN>) { // stessa condizione, ma valore diverso
// sequenza di istruzioni
} else { // nessuna delle condizioni precedenti
// sequenza di istruzioni
}
switch (variabile) {
case <valore1>:
// sequenza di istruzioni
break;
case <valore2>:
// sequenza di istruzioni
break;
case <valore3>:
// sequenza di istruzioni
break;
...
case <valoreN>:
// sequenza di istruzioni
break;
default: // ramo else, opzionale,
// eseguito se la variabile non
// contiene nessuno dei valori
// specificati nei blocchi case
// precedenti
// sequenza di istruzioni
}
L'itruzione break, utilizzata al termine di ogni ramo case, è utilizzata per trasferire l'esecuzione all'istruzione che segue lo switch, altrimenti essa proseguirebbe da un case a quello seguente, non traducendo, di fatto, la stessa situazione del blocco if - elseif mostrato in precedenza.
L'ultimo case, oppure il blocco default, se presente, possono non utilizzare l'istruzione break, in quanto non sono seguiti da ulteriori blocchi.
Come già evidenziato, il blocco default è opzionale, ma, se presente, deve essere l'ultimo blocco del costrutto switch.
Nota:
L'istruzione break può anche essere utilizzata in ognuno dei blocchi di iterazione visti in precedenza (determinati e indeterminati).
La sua esecuzione ha come effetto l'interruzione dell'iterazione ed il trasferimento del controllo all'istruzione che segue il ciclo in cui essa è inserita.
L'istruzione break può anche essere utilizzata in ognuno dei blocchi di iterazione visti in precedenza (determinati e indeterminati).
La sua esecuzione ha come effetto l'interruzione dell'iterazione ed il trasferimento del controllo all'istruzione che segue il ciclo in cui essa è inserita.