Costrutto condizionale Switch in Java

Il costrutto condizionale switch è utilizzato quando si hanno un numero di opzioni (scelte) ed è necessario eseguire un’azione diversa in base ad ogni scelta.

Ecco come appare la sintassi del costrutto Switch in Java:

switch (variabile o espressione) {
  case costante:
    // Codice da eseguire
    ;
  case costante:
    // Codice da eseguire
    ;
  default:
    // Codice da eseguire
    ;
}

Solitamente il costrutto switch viene utilizzato con l’istruzione break anche se è opzionale. In questa guida vedremo prima un esempio senza il break e poi vedremo perché utilizzarlo.

Esempio di Switch in Java

public class EsempioSwitch {
  public static void main(String args[]) {
    int numero = 5;

    switch (numero) {
      case 1:
        System.out.println("Il numero è uguale a 1");
      case 5:
        System.out.println("Il numero è uguale a 5");
      case 10:
        System.out.println("Il numero è uguale a 10");
    default:
      System.out.println("Altro valore");
    }
  }
}

Nell’esempio è stato passato come parametro una variabile, ma poteva essere anche passata un’espressione, come per esempio numero * 3. Questo avrebbe fornito come risultato 30 e il numero non sarebbe entrato in nessuno dei casi specificato, ecco perché è sempre opportuno definire l’istruzione default in modo da catturare eventuali casi non gestiti.

Diagramma di flusso

Come prima cosa, la variabile, valore o epsressione fornita come parametro allo switch, viene valutata e in base al risultato, il corrispondente blocco di codice viene eseguito.

Costrutto condizionale Switch in Java msedge Br9XuyiLKy
Diagramma di flusso del costrutto condizionale Switch

L’istruzione break nello switch

L’istruzione break nello switch è opzionale ma viene comunque utilizzata nella maggioranza dei casi in cui viene usato lo switch. Come prima cosa però, vediamo quello che viene stampato se proviamo ad eseguire il seguente codice:

Costrutto condizionale Switch in Java msedge eEDb7sd0du

Nel programma abbiamo passato 5 come valore, quindi lo switch eseguirà il codice nel corpo del case 5. Tuttavia, in assenza dell’istruzione break, vengono eseguiti anche tutti i casi successivi fino alla fine.

L’istruzione break serve quando si desidera che il flusso di esecuzione del programma esca dallo switch dopo che il primo blocco di codice corretto viene eseguito, ignorando i casi seguenti.

Eseguiamo ora lo stesso esempio con l’istruzione break:

Costrutto condizionale Switch in Java msedge LSoQFX1Gnw

Utilizzare il break nell’istruzione di default è opzionale, infatti in quel caso l’esecuzione del programma si interrompe autonomamente, ma in caso di utilizzo non si commette nessun errore.

Note sul costrutto Switch

All’interno di uno switch è possibile utilizzare solamente numeri interi (int), valori riconducibili a interi (byte, short, char), stringhe ed enums.

char ch = 'b';
switch (ch) {
  case 'b':
    // Codice...
}

L’ordine delle casistiche riportate in uno switch non è importante, i numeri interi possono essere specificati in qualsiasi ordine, non necessariamente ascendente.

Costrutto condizionale Switch in Java msedge lEYALwtmva

Le espressioni fornite come parametro allo switch devono restituire un valore costante, in caso contrario non funzionerà.

// Espressioni valide
switch (3 * 8)
switch (10 - 3)

// Espressioni non valide
switch (a + b)
switch (x + y)

L’annidamento dei costrutti switch è consentito, questo significa che si può utilizzare uno switch all’interno di un altro switch. Tuttavia questa pratica deve essere evitata dato che rende il programma più complesso e meno leggibile.