L'istruzione break in Java
Nel linguaggio Java l'istruzione `break` non è niente di particolarmente complesso, ma è molto utile quando vuoi "uscire" o interrompere un ciclo o un’istruzione `switch`.
break
Pensa a `break` come una sorta di interruttore di emergenza: quando lo incontri nel codice, interrompe immediatamente quello che sta facendo e ti fa uscire dal ciclo o dal blocco di codice in cui ti trovi.
Puoi usare questa istruzione nelle strutture cicliche e nelle strutture condizionali.
In altre parole l'istruzione `break` è come un piccolo comando di stop che ti consente di controllare quando uscire da cicli `for`, `while` o blocchi di codice come lo `switch` . Senza questa istruzione, potresti eseguire troppo codice, anche quando non ne hai bisogno. Nei prossimi paragrafi vedremo qualche esempio per rendere tutto più chiaro. Non è complicata da usare.
Break nei cicli `for`
Immagina di dover cercare un numero in un array.
Quando lo trovi, non ha senso continuare a cercare, giusto? Ecco che arriva in aiuto `break`.
Guarda questo esempio:
public class Main {
public static void main(String[] args) {
int[] numeri = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int numeroDaTrovare = 5;
for (int i = 0; i < numeri.length; i++) {
if (numeri[i] == numeroDaTrovare) {
System.out.println("Numero trovato: " + numeri[i]);
break; // Esci dal ciclo appena trovi il numero
}
}
}
}
Qui, il ciclo `for` scorre ogni elemento dell'array.
Appena trova il numero che stiamo cercando, stampa il risultato e poi usa `break` per interrompere il ciclo.
Numero trovato: 5
Senza `break`, il ciclo continuerebbe fino alla fine, anche se avessimo già trovato ciò che cercavamo.
Break nei cicli `while`
Il concetto è lo stesso anche nei cicli `while`.
Ad esempio, supponiamo che stai leggendo numeri da un input fino a quando non incontri un numero negativo. Quando ciò accade, vuoi interrompere il ciclo:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
// Ciclo infinito, si interromperà solo con un break
System.out.print("Inserisci un numero (numero negativo per uscire): ");
int numero = scanner.nextInt();
if (numero < 0) {
break; // Esce dal ciclo se il numero è negativo
}
System.out.println("Hai inserito: " + numero);
}
System.out.println("Hai inserito un numero negativo. Fine del programma.");
}
}
In questo caso, il ciclo `while` continua fino a quando l’utente inserisce un numero negativo.
Appena ciò avviene, l’istruzione `break` interrompe il ciclo e il programma esce.
Inserisci un numero (numero negativo per uscire): 11
Hai inserito: 11
Inserisci un numero (numero negativo per uscire): 3
Hai inserito: 3
Inserisci un numero (numero negativo per uscire): -4
Hai inserito un numero negativo. Fine del programma.
Break nello `switch`
Ora passiamo a un altro uso comune di `break`, all’interno dell’istruzione `switch`.
Qui `break` è fondamentale per prevenire quello che si chiama "fall-through", cioè il passaggio da un caso al successivo.
Ecco un esempio pratico.
public class Main {
public static void main(String[] args) {
int giorno = 3;
switch (giorno) {
case 1:
System.out.println("Lunedì");
break;
case 2:
System.out.println("Martedì");
break;
case 3:
System.out.println("Mercoledì");
break;
case 4:
System.out.println("Giovedì");
break;
case 5:
System.out.println("Venerdì");
break;
default:
System.out.println("Weekend!");
break;
}
}
}
In questo caso, se `giorno` è uguale a 3, lo switch stampa "Mercoledì" e poi si interrompe.
Mercoledì
Senza `break`, il programma continuerebbe a eseguire tutti i casi successivi, stampando anche "Giovedì" e "Venerdì", anche se non dovrebbe!
Cosa succede senza `break`?
Proviamo a togliere i `break` dalla struttura condizionale `switch` e vediamo cosa accade.
public class Main {
public static void main(String[] args) {
int giorno = 3;
switch (giorno) {
case 1:
System.out.println("Lunedì");
case 2:
System.out.println("Martedì");
case 3:
System.out.println("Mercoledì");
case 4:
System.out.println("Giovedì");
case 5:
System.out.println("Venerdì");
default:
System.out.println("Weekend!");
}
}
}
Se `giorno` è 3, il programma stamperà "Mercoledì", "Giovedì", "Venerdì" e "Weekend!".
Questo accade perché non si ferma dopo aver trovato il risultato corretto.
Mercoledì
Giovedì
Venerdì
Weekend!
È probabile che non sia questo quello che vuoi ottenere.
Quindi, il `break` serve a fermare l'esecuzione dopo che ha trovato il caso giusto.
A questo punto dovresti avere ben chiaro come funziona e a cosa serve l'istruzione `break` in un programma Java.