1. breakdichiarazione

Diamo un'occhiata a un esempio della lezione precedente:

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".

Il programma legge le righe dalla console finché exitnon viene inserita la parola. Se inserisci questa parola, la isExit variabile diventa true, la condizione del ciclo sarà e il ciclo terminerà."!isExitfalse

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. Il comunicato è molto sintetico:

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".


2. continuare la dichiarazione

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

L'esecuzione del corpo del ciclo una volta è chiamata iterazione del ciclo. L' continueistruzione interrompe l'iterazione corrente del ciclo, ma a differenza dell'istruzione break, non termina il ciclo stesso. Anche il comunicato è breve:

continue;

L' continueistruzione è super conveniente in un ciclo se vogliamo "saltare" l'esecuzione del corpo del ciclo in determinate situazioni.

Compito: Vogliamo scrivere un programma che stampi i numeri da 1a 20ma salti i numeri che sono divisibili per 7. 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.

In realtà, questo codice non funzionerà , perché irimarrà per sempre bloccato al numero 7. Dopotutto, l' continueistruzione salta altre due istruzioni: System.out.println(i)e i++. Di conseguenza, una volta raggiunto il valore 7, la variabile ismetterà di cambiare e ci ritroveremo in un ciclo infinito.

Abbiamo scritto il codice in questo modo apposta per illustrare questo 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);
}