"Ciao Amico!

"Ciao Eli."

"Hai già studiato i loop, ed è fantastico."

"Sono d'accordo! Ora non so assolutamente come vivere senza di loro."

"A volte puoi farne a meno... Ma più spesso ne avrai bisogno. Oggi parleremo della situazione in cui devi uscire da un giro prima del previsto."

"Vuoi dire, quando la condizione per continuare il ciclo è vera, ma hai ancora bisogno di uscire dal ciclo?"

"Esattamente! A volte sembra che tu sia già un programmatore. Ad ogni modo, per uscire da un ciclo prima del previsto, puoi usare l' istruzione break . Dai un'occhiata al seguente esempio:

Codice Spiegazione
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Il programma leggerà una riga dalla tastiera, finché non si inserisce "exit".

"Capisco. Il programma legge le righe dalla console. Se inserisci "exit", la isExitvariabile diventa true, la condizione del ciclo sarà e il ciclo terminerà."!isExitfalse

"Esatto. Quindi, Java ha un'istruzione speciale breakche ti consente di semplificare tale logica. Se un'istruzione breakviene eseguita all'interno di un ciclo, il ciclo termina immediatamente. Il programma inizierà a eseguire l'istruzione che segue il ciclo. L'istruzione è molto breve :

break;

"Ecco come puoi usare l' breakistruzione per riscrivere l'esempio che abbiamo appena discusso:

Codice Spiegazione
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Il programma leggerà una riga dalla tastiera, finché non si inserisce "exit".

"Forse lo ricorderò. Sento che mi tornerà utile."

"Ma breaknon è l'unica istruzione Java che ti consente di controllare il comportamento di un ciclo. Java ha anche l' continueistruzione. Se esegui un'istruzione continueall'interno di un ciclo, l'iterazione corrente del ciclo terminerà prima del previsto."

"Cosa intendi per iterazione?"

"Un'iterazione del ciclo è un'esecuzione del corpo del ciclo. L' continueistruzione interrompe l'iterazione corrente del ciclo, ma a differenza breakdell'istruzione, non termina il ciclo stesso. L'istruzione è anche breve:

continue;

"Quindi, l' continueistruzione può essere utilizzata in un ciclo se vogliamo 'saltare' l'esecuzione di determinate iterazioni del ciclo?"

"Esattamente. Capisci la differenza tra breake continue? Se hai bisogno di trovare un sette tra 20 cifre non ripetitive, che tipo di dichiarazione di interruzione del ciclo e del ciclo useresti?

"Hmm... esaminerei tutti i numeri, e se trovo 7, allora eseguirei un break."

"Cosa succede se è necessario visualizzare i numeri da 1a 20ad eccezione dei numeri divisibili per 7?"

"Beh, qui probabilmente ho bisogno continue, dato che non voglio uscire dal giro. Ma continuo a non capire bene."

"Lascia che ti mostri come risolvere questo problema. Ecco come potrebbe apparire questo codice."

Codice Spiegazione
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Il programma visualizza i numeri da 1a 20. Se il numero è divisibile per 7(il resto della divisione per 7è 0 ), saltiamo la visualizzazione del numero.

"Perché mi guardi in modo così sospettoso, Ellie? C'è qualche trucco qui?"

"Non puoi farti ingannare, Amigo! In effetti, questo codice non funzionerà correttamente . Visualizzerà le prime 6 cifre, e poi irimarrà per sempre bloccato sul numero 7. Dopotutto, l' continueistruzione salta altre due istruzioni: System.out.println(i)e i++. Come di conseguenza, una volta raggiunto il valore 7, la variabile ismetterà di cambiare e ci ritroveremo in un ciclo infinito. Ho scritto il codice in questo modo apposta per illustrare un errore molto comune."

"Come lo ripariamo?"

"Ci sono due opzioni qui:"

Opzione 1: modifica iprima dell'esecuzione continue, ma dopoi % 7

Opzione 2: incrementare sempre iall'inizio del ciclo. Ma allora iil valore iniziale deve essere 0.

opzione 1 opzione 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

"Eccellente! Cercherò di non commettere questo errore."

"Ricorderò la tua promessa!"