"Hej, Amigo!

"Hej Ellie."

"Du har allerede studeret loops, og det er fedt."

"Jeg er enig! Nu ved jeg slet ikke, hvordan jeg skal leve uden dem."

"Nogle gange kan du undvære dem... Men oftere får du brug for dem. I dag skal vi tale om situationen, når du skal ud af en løkke forud for tidsplanen."

"Mener du, når betingelsen for at fortsætte løkken er sand, men du stadig skal forlade løkken?"

"Nøjagtigt! Nogle gange lyder du, som om du allerede er programmør. Uanset hvad, for at bryde ud af en løkke forud for tidsplanen, kan du bruge pauseerklæringen. Tag et kig 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 læse en linje fra tastaturet, indtil du indtaster "exit".

"Jeg kan se. Programmet læser linjer fra konsollen. Hvis du indtaster "exit", så isExitbliver variablen true, sløjfebetingelsen vil være , og løkken slutter."!isExitfalse

"Det er rigtigt. Så Java har en speciel breaksætning, der lader dig forenkle sådan logik. Hvis en breaksætning udføres inde i en løkke, slutter løkken med det samme. Programmet vil begynde at udføre sætningen, der følger efter løkken. Udsagnet er meget kort :

break;

"Sådan kan du bruge breakerklæringen til at omskrive det eksempel, vi lige har diskuteret:

Kode Forklaring
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Programmet vil læse en linje fra tastaturet, indtil du indtaster "exit".

"Måske husker jeg det. Jeg føler, at det vil komme godt med."

"Men breaker ikke den eneste Java-sætning, der lader dig kontrollere en loops adfærd. Java har også sætningen continue. Hvis du udfører en continuesætning inde i en loop, vil den aktuelle iteration af loopet ende før tidsplanen."

"Hvad mener du med iteration?"

"En loop-iteration er én udførelse af loop-kroppen. continueUdsagnet afbryder den aktuelle iteration af loopet, men i modsætning til breakudsagnet afslutter det ikke selve loopet. Udsagnet er også kort:

continue;

"Så continuesætningen kan bruges i en løkke, hvis vi ønsker at 'springe over' udførelse af visse iterationer af løkken?"

"Nøjagtigt. Forstår du forskellen mellem breakog continue? Hvis du skal finde en syv blandt 20 ikke-gentagende cifre, hvilken slags loop og loop interruption statement ville du så bruge?

"Hmm... jeg ville gennemgå alle tallene, og hvis jeg finder 7, så vil jeg udføre en break."

"Hvad hvis du har brug for at vise tal fra 1til 20undtagen tal, der er delelige med 7?"

"Nå, her har jeg nok brug for continue, da jeg ikke vil ud af løkken. Men jeg forstår det stadig ikke helt."

"Lad mig vise dig, hvordan du løser dette problem. Sådan kan denne kode se ud."

Kode Forklaring
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Programmet viser tal fra 1til 20. Hvis tallet er deleligt med 7(resten division med 7er 0 ), springer vi over at vise tallet.

"Hvorfor kigger du så mistænkeligt på mig, Ellie? Er der en fangst her?"

"Du kan ikke narre dig, Amigo! Denne kode vil faktisk ikke fungere korrekt . Den vil vise de første 6 cifre og ivil derefter for altid forblive fast på tallet 7. Når alt kommer til alt, continuespringer udsagnet to andre udsagn over: System.out.println(i)og i++. Som et resultat, når vi når værdien , vil 7variablen holde op med at ændre sig, og vi vil være i en uendelig løkke. Jeg skrev koden på denne måde med vilje for at illustrere en meget almindelig fejl."i

"Hvordan fikser vi det?"

"Der er to muligheder her:"

Mulighed 1: skift ifør udførelse continue, men efteri % 7

Mulighed 2: Forøg altid ii begyndelsen af ​​løkken. Men så iskal startværdien være 0.

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

"Fremragende! Jeg vil prøve ikke at begå denne fejl."

"Jeg vil huske dit løfte!"