"Hej Amigo!
"Hej Ellie."
"Du har redan studerat loopar, och det är coolt."
"Jag håller med! Nu vet jag inte hur jag ska leva utan dem."
"Ibland kan du klara dig utan dem... Men oftare kommer du att behöva dem. Idag ska vi prata om situationen när du behöver komma ur en slinga före schemat."
"Menar du när villkoret för att fortsätta slingan är sant, men du fortfarande behöver lämna slingan?"
"Precis! Ibland låter du som att du redan är en programmerare. Hur som helst, för att bryta dig ur en loop före schemat kan du använda break- satsen . Ta en titt på följande exempel:
Koda | Förklaring |
---|---|
|
Programmet kommer att läsa en rad från tangentbordet tills du anger "exit" . |
"Jag förstår. Programmet läser rader från konsolen. Om du anger , "exit"
då isExit
blir variabeln true
, loopvillkoret blir , och loopen kommer att sluta."!isExit
false
"Det stämmer. Så, Java har en speciell break
sats som låter dig förenkla sådan logik. Om en break
sats exekveras inuti en loop, slutar slingan omedelbart. Programmet kommer att börja köra den sats som följer efter slingan. Satsen är mycket kortfattad. :
break;
"Så här kan du använda uttalandet break
för att skriva om exemplet vi just diskuterade:
Koda | Förklaring |
---|---|
|
Programmet kommer att läsa en rad från tangentbordet tills du anger "exit" . |
"Det kanske jag kommer ihåg. Jag känner att det kommer väl till pass."
"Men break
är inte den enda Java-satsen som låter dig styra en loops beteende. Java har också den. continue
Om du kör en continue
sats i en loop kommer den aktuella iterationen av loopen att avslutas före schemat."
"Vad menar du med iteration?"
"En loop-iteration är en exekvering av loopkroppen. continue
Uttrycket avbryter den aktuella iterationen av loopen, men till skillnad från break
påståendet avslutar det inte själva loopen. Uttrycket är också kort:
continue;
"Så, continue
uttalandet kan användas i en loop om vi vill "hoppa över" exekvering av vissa iterationer av loopen?"
"Exakt. Förstår du skillnaden mellan break
och continue
? Om du behöver hitta en sjua bland 20 icke-repeterande siffror, vilken typ av loop- och loop-avbrottssats skulle du använda?
"Hmm... jag skulle gå igenom alla siffror, och om jag hittar 7, då skulle jag köra en . break
"
"Vad händer om du behöver visa siffror från 1
till 20
förutom siffror som är delbara med ? 7
"
"Tja, här behöver jag nog continue
, eftersom jag inte vill lämna slingan. Men jag förstår fortfarande inte riktigt."
"Låt mig visa dig hur du löser det här problemet. Så här kan den här koden se ut."
Koda | Förklaring |
---|---|
|
Programmet visar nummer från 1 till 20 . Om talet är delbart med 7 (resten division med 7 är 0 ), hoppar vi över att visa talet. |
"Varför tittar du så misstänksamt på mig, Ellie? Finns det någon hake här?"
"Du kan inte luras, Amigo! Den här koden kommer faktiskt inte att fungera korrekt . Den kommer att visa de första 6 siffrorna och sedan i
förbli fast på numret för alltid. 7
Trots allt continue
hoppar uttalandet över två andra uttalanden: System.out.println(i)
och i++
. Som ett resultat, när vi når värdet kommer 7
variabeln i
att sluta ändras och vi kommer att vara i en oändlig loop. Jag skrev koden på detta sätt med avsikt för att illustrera ett mycket vanligt misstag."
"Hur fixar vi det?"
"Det finns två alternativ här:"
Alternativ 1: ändra i
före exekvering continue
, men efteri % 7
Alternativ 2: öka alltid i
i början av loopen. Men då i
måste startvärdet vara 0
.
Alternativ 1 | Alternativ 2 |
---|---|
|
|
"Utmärkt! Jag ska försöka att inte göra det här misstaget."
"Jag kommer ihåg ditt löfte!"