1. breakuttalelse

La oss ta en titt på et eksempel fra forrige leksjon:

Kode Forklaring
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Programmet vil lese en linje fra tastaturet, til du skriver inn "exit".

Programmet leser linjer fra konsollen til ordet exitskrives inn. Hvis du skriver inn dette ordet, isExit blir variabelen true, løkkebetingelsen vil være , og løkken avsluttes."!isExitfalse

Java har en spesiell breakuttalelse som lar deg forenkle slik logikk. Hvis en breaksetning kjøres inne i en løkke, avsluttes løkken umiddelbart. Programmet vil begynne å utføre setningen som følger løkken. Uttalelsen er veldig kort:

break;

Slik kan du bruke uttalelsen breaktil å omskrive eksemplet vi nettopp diskuterte:

Kode Forklaring
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Programmet vil lese en linje fra tastaturet, til du skriver inn "exit".


2. fortsett uttalelse

Men breaker ikke den eneste Java-setningen som lar deg kontrollere en loops oppførsel. Java har også continueuttalelsen. Hvis du utfører en continuesetning i en løkke, vil den nåværende iterasjonen av løkken avsluttes før tidsplanen.

Å utføre løkken én gang kalles en iterasjon av løkken. Utsagnet continueavbryter gjeldende iterasjon av loopen, men i motsetning til breakutsagnet avslutter den ikke selve loopen. Uttalelsen er også kort:

continue;

Utsagnet continueer super praktisk i en loop hvis vi ønsker å "hoppe over" utførelse av loop-kroppen i visse situasjoner.

Oppgave: Vi ønsker å skrive et program som skriver ut tall fra 1til 20men hopper over tall som er delbare med 7. Slik kan denne koden se ut.

Kode Forklaring
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Programmet viser tall fra 1til 20. Hvis tallet er delelig med 7(resten av divisjon med 7er 0), hopper vi over å vise tallet.

Faktisk vil denne koden ikke fungere , fordi iden vil alltid sitte fast ved nummeret 7. Utsagnet hopper tross alt continueover to andre utsagn: System.out.println(i)og i++. Som et resultat, når vi når verdien , vil 7variabelen slutte å endre seg og vi vil være i en uendelig sløyfe.i

Vi skrev koden på denne måten med vilje for å illustrere denne svært vanlige feilen. Hvordan fikser vi det?

Det er to alternativer her:

Alternativ 1: endre ifør kjøring continue, men etteri % 7

Alternativ 2: øke alltid ii begynnelsen av loopen. Men da imå startverdien være 0.

valg 1 Alternativ 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);
}