1. breakerklæring

Lad os tage et kig på et eksempel fra den forrige lektion:

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

Programmet læser linjer fra konsollen, indtil ordet exitindtastes. Hvis du indtaster dette ord, isExit bliver variablen true, løkkebetingelsen vil være , og løkken slutter."!isExitfalse

Java har en særlig breakerklæring, 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 løkken. Udtalelsen 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".


2. Fortsæt erklæring

Men breaker ikke den eneste Java-sætning, der lader dig kontrollere en loops adfærd. Java har også continueerklæringen. Hvis du udfører en continuesætning inde i en løkke, vil den aktuelle iteration af løkken ende før tidsplanen.

Udførelse af løkkelegemet én gang kaldes en iteration af løkken. Sætningen continueafbryder den aktuelle iteration af løkken, men i modsætning til breaksætningen afslutter den ikke selve løkken. Udtalelsen er også kort:

continue;

Udsagnet continueer super praktisk i en loop, hvis vi ønsker at "springe over" udførelse af loop-kroppen i visse situationer.

Opgave: Vi vil skrive et program, der udskriver tal fra 1til 20, men springer tal over, der er delelige med 7. 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 af ​​divisionen med 7er 0), springer vi over at vise tallet.

Faktisk vil denne kode ikke fungere , fordi iden for altid vil sidde fast ved nummeret 7. Udsagnet springer jo continueto 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.i

Vi skrev koden på denne måde med vilje for at illustrere denne meget almindelige fejl. 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);
}