"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 |
---|---|
|
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å isExit
blir variabelen true
, løkkebetingelsen vil være , og sløyfen avsluttes."!isExit
false
"Det stemmer. Så, Java har en spesiell break
setning som lar deg forenkle slik logikk. Hvis en break
setning 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 break
til å omskrive eksemplet vi nettopp diskuterte:
Kode | Forklaring |
---|---|
|
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 break
er ikke den eneste Java-setningen som lar deg kontrollere atferden til en løkke. Java har også setningen continue
. Hvis du utfører en continue
setning 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 continue
avbryter gjeldende iterasjon av loopen, men i motsetning til break
utsagnet avslutter den ikke selve loopen. Utsagnet er også kort:
continue;
"Så, continue
uttalelsen kan brukes i en loop hvis vi ønsker å "hoppe over" utførelse av visse iterasjoner av loopen?"
"Nøyaktig. Forstår du forskjellen mellom break
og 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 1
til 20
bortsett 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 |
---|---|
|
Programmet viser tall fra 1 til 20 . Hvis tallet er delelig med 7 (resten divisjon med 7 er 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 i
vil deretter for alltid forbli fast på tallet 7
. Tross alt continue
hopper setningen over to andre utsagn: System.out.println(i)
og i++
. Som et resultat, når vi når verdien , vil 7
variabelen 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 i
før kjøring continue
, men etteri % 7
Alternativ 2: øke alltid i
i begynnelsen av loopen. Men da i
må startverdien være 0
.
valg 1 | Alternativ 2 |
---|---|
|
|
"Utmerket! Jeg skal prøve å ikke gjøre denne feilen."
"Jeg skal huske løftet ditt!"