"Hei, Amigo!

"Hei Ellie."

"Du har allerede studert loops, og det er kult."

"Jeg er enig! Nå vet jeg ikke hvordan jeg skal leve uten dem."

"Noen ganger kan du klare deg uten dem ... Men oftere vil du trenge dem. I dag skal vi snakke om situasjonen når du trenger å komme deg ut av en løkke før skjema."

"Mener du når betingelsen for å fortsette sløyfen er sann, men du fortsatt må ut av sløyfen?"

"Akkurat! Noen ganger høres du ut som om du allerede er en programmerer. Uansett, for å bryte ut av en sløyfe før tidsplanen, kan du bruke break statement . Ta en titt på følgende eksempel:

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

"Jeg skjønner. Programmet leser linjer fra konsollen. Hvis du skriver inn "exit", så isExitblir variabelen true, løkkebetingelsen vil være , og sløyfen avsluttes."!isExitfalse

"Det stemmer. Så, Java har en spesiell breaksetning som lar deg forenkle slik logikk. Hvis en breaksetning kjøres inne i en løkke, slutter løkken umiddelbart. Programmet vil begynne å utføre setningen som følger sløyfen. Utsagnet 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".

"Kanskje jeg husker det. Jeg føler at det kommer godt med."

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

"Hva mener du med iterasjon?"

"En loop-iterasjon er én utførelse av loop-kroppen. Utsagnet continueavbryter gjeldende iterasjon av loopen, men i motsetning til breakutsagnet avslutter den ikke selve loopen. Utsagnet er også kort:

continue;

"Så, continueuttalelsen kan brukes i en loop hvis vi ønsker å "hoppe over" utførelse av visse iterasjoner av loopen?"

"Nøyaktig. Forstår du forskjellen mellom breakog continue? Hvis du trenger å finne en sjuer blant 20 ikke-repeterende sifre, hva slags sløyfe- og sløyfeavbruddssetning vil du bruke?

"Hmm... jeg ville gått gjennom alle tallene, og hvis jeg finner 7, så vil jeg utføre en break."

"Hva om du trenger å vise tall fra 1til 20bortsett fra tall som er delbare med 7?"

"Vel, her trenger jeg nok continue, siden jeg ikke vil ut av loopen. Men jeg forstår det fortsatt ikke helt."

"La meg vise deg hvordan du løser dette problemet. 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 divisjon med 7er 0 ), hopper vi over å vise tallet.

"Hvorfor ser du så mistenksomt på meg, Ellie? Er det noe fangst her?"

"Du kan ikke la deg lure, Amigo! Denne koden vil faktisk ikke fungere riktig . Den vil vise de første 6 sifrene, og ivil deretter for alltid forbli fast på tallet 7. Tross alt continuehopper setningen over 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. Jeg skrev koden på denne måten med vilje for å illustrere en veldig vanlig feil."i

"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);
}

"Utmerket! Jeg skal prøve å ikke gjøre denne feilen."

"Jeg skal huske løftet ditt!"