1. breakuttalande

Låt oss ta en titt på ett exempel från föregående lektion:

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

Programmet läser rader från konsolen tills ordet exitskrivs in. Om du anger det här ordet isExit blir variabeln true, loopvillkoret blir och loopen slutar."!isExitfalse

Java har ett speciellt breakuttalande som låter dig förenkla sådan logik. Om en breaksats exekveras inuti en loop, slutar loopen omedelbart. Programmet kommer att börja exekvera satsen som följer loopen. Uttalandet är mycket kortfattat:

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


2. fortsätt uttalande

Men breakär inte den enda Java-satsen som låter dig kontrollera en loops beteende. Java har också continueuttalandet. Om du kör en continuesats i en loop kommer den aktuella iterationen av loopen att avslutas före schemat.

Att utföra loopkroppen en gång kallas en iteration av loopen. Sätten continueavbryter den aktuella iterationen av slingan, men till skillnad från breaksatsen avslutar den inte själva slingan. Uttalandet är också kortfattat:

continue;

Uttalandet continueär superbekvämt i en loop om vi vill "hoppa över" exekvering av loopkroppen i vissa situationer.

Uppgift: Vi vill skriva ett program som skriver ut siffror från 1till 20men hoppar över siffror som är delbara med 7. 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(återstoden av divisionen med 7är 0), hoppar vi över att visa talet.

Egentligen kommer den här koden inte att fungera , eftersom den iför alltid kommer att vara fast vid numret 7. Trots allt continuehoppar påståendet över två andra påståenden: 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.

Vi skrev koden på detta sätt med avsikt för att illustrera detta mycket vanliga 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);
}