break con etichetta
Esci ordinatamente dai cicli esterni
break con etichetta è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Il problema dei cicli annidati
Un semplice break esce solo dal ciclo interno. Spesso, però, si desidera uscire da entrambi i cicli contemporaneamente.
Immagini di cercare un valore in una griglia. Quando lo trova, vuole interrompere tutto, non solo il ciclo interno.
Java risolve questo problema con un break con etichetta.
Che cos'è un'etichetta?
Una label è un nome associato a un ciclo e seguito da due punti.
Per esempio, outer: posizionato subito prima di un ciclo for assegna a quel ciclo il nome "outer".
Le etichette, da sole, non fanno nulla. Diventano utili quando vengono usate insieme a break o continue.
outer:
for (int i = 0; i < 3; i++) {
// 'outer' is now a name for this loop
}Sintassi del break con etichetta
Scriva il nome dell'etichetta dopo la parola chiave break: break outer;
In questo modo Java esce dal ciclo chiamato outer, anche se l'istruzione si trova in profondità dentro un ciclo annidato.
Sia il ciclo interno sia quello esterno si interrompono immediatamente.
break outer; // exits the loop labeled 'outer'break con etichetta in azione
Qui cerchiamo un valore in una griglia 3x3. Quando troviamo col 2 nella riga 2, interrompiamo il ciclo esterno.
Questo interrompe entrambi i cicli contemporaneamente, a differenza di un semplice break.
public class Main {
public static void main(String[] args) {
outer:
for (int row = 1; row <= 3; row++) {
for (int col = 1; col <= 3; col++) {
if (row == 2 && col == 2) {
System.out.println("Found at " + row + "," + col);
break outer;
}
}
}
System.out.println("Search over");
}
}Perché si è interrotto tutto
L'output è stato "Found at 2,2", seguito da "Search over".
Poiché abbiamo usato break outer, entrambi i cicli sono terminati. La riga 3 non è mai stata visitata.
Un semplice break avrebbe continuato con la riga 3 dopo essere uscito solo dal ciclo interno.
Confronto tra i due break
Osservi la stessa griglia con un semplice break.
Esce solo dal ciclo interno, quindi il ciclo esterno continua a scorrere tutte le righe.
public class Main {
public static void main(String[] args) {
for (int row = 1; row <= 3; row++) {
for (int col = 1; col <= 3; col++) {
if (row == 2 && col == 2) {
break;
}
System.out.println(row + "," + col);
}
}
}
}Ricerca in un array bidimensionale
Un caso d'uso reale consiste nel trovare un valore all'interno di una matrice.
Una volta individuato il valore, un break con etichetta termina l'intera ricerca in modo ordinato.
public class Main {
public static void main(String[] args) {
int[][] grid = {{1, 2}, {3, 9}, {5, 6}};
int target = 9;
search:
for (int r = 0; r < grid.length; r++) {
for (int c = 0; c < grid[r].length; c++) {
if (grid[r][c] == target) {
System.out.println("At row " + r + " col " + c);
break search;
}
}
}
}
}L'etichetta deve trovarsi su un ciclo
Un'etichetta si trova direttamente prima del ciclo a cui si riferisce. Non è possibile usare break verso un'etichetta che non si trova su un ciclo che lo contiene.
Scelga nomi chiari come outer, rows o search, così il codice risulterà naturale da leggere.
Eviti nomi vaghi come x:, che nascondono l'intento.
Tre livelli di annidamento
Le etichette funzionano anche con tre o più cicli annidati.
Qui un break con etichetta esce direttamente da tutti e tre i cicli contemporaneamente quando viene soddisfatta una condizione.
public class Main {
public static void main(String[] args) {
done:
for (int a = 1; a <= 2; a++) {
for (int b = 1; b <= 2; b++) {
for (int c = 1; c <= 2; c++) {
if (a + b + c == 4) {
System.out.println(a + "," + b + "," + c);
break done;
}
}
}
}
}
}Quando è utile il break con etichetta
Il break con etichetta è particolarmente utile quando deve abbandonare diversi cicli nel momento stesso in cui viene trovato un risultato.
Evita variabili di stato aggiuntive come boolean found, verificate a ogni livello.
Usato con moderazione, mantiene brevi e chiare le ricerche nei cicli.
Lo usi con moderazione
Per quanto potenti, troppe etichette rendono il codice difficile da seguire.
Ricorra principalmente a un break con etichetta nelle vere ricerche annidate. Nei cicli semplici, un break normale è più chiaro.
La leggibilità viene sempre prima.
Verifica rapida
Stabilisca che cosa fa un break con etichetta nei cicli annidati.
Riepilogo
Una label assegna un nome a un ciclo e break label; esce dal ciclo indicato, uscendo anche da tutti i cicli annidati al suo interno.
È ideale per interrompere contemporaneamente un'intera ricerca annidata. Nella prossima lezione vedrà come usare le etichette con continue.
Domande Frequenti
La lezione «break con etichetta» è gratuita?
Sì — il testo completo di «break con etichetta» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «break con etichetta»?
Esci ordinatamente dai cicli esterni Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «break con etichetta»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- break e continue
- break con etichetta
- continue con etichetta
- Evitare il flusso a spaghetti