"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
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
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"isExitblir variabeln true, loopvillkoret blir , och loopen kommer att sluta."!isExitfalse

"Det stämmer. Så, Java har en speciell breaksats som låter dig förenkla sådan logik. Om en breaksats 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 breakför att skriva om exemplet vi just diskuterade:

Koda Förklaring
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
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. continueOm du kör en continuesats 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. continueUttrycket avbryter den aktuella iterationen av loopen, men till skillnad från breakpåståendet avslutar det inte själva loopen. Uttrycket är också kort:

continue;

"Så, continueuttalandet kan användas i en loop om vi vill "hoppa över" exekvering av vissa iterationer av loopen?"

"Exakt. Förstår du skillnaden mellan breakoch 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 1till 20fö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
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Programmet visar nummer från 1till 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 iförbli fast på numret för alltid. 7Trots allt continuehoppar uttalandet över två andra uttalanden: System.out.println(i)och i++. Som ett resultat, när vi når värdet kommer 7variabeln iatt 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 iföre exekvering continue, men efteri % 7

Alternativ 2: öka alltid ii början av loopen. Men då imåste startvärdet vara 0.

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

"Utmärkt! Jag ska försöka att inte göra det här misstaget."

"Jag kommer ihåg ditt löfte!"