1. breaknyilatkozat

Nézzünk egy példát az előző leckéből:

Kód Magyarázat
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
A program beolvas egy sort a billentyűzetről, amíg be nem írja "exit".

A program beolvassa a sorokat a konzolról a szó beírásáig exit. Ha beírja ezt a szót, akkor a isExit változó a következő lesz true, a ciklusfeltétel pedig a lesz , és a ciklus véget ér."!isExitfalse

A Java-nak van egy speciális breakutasítása, amely lehetővé teszi az ilyen logika egyszerűsítését. Ha egy breakutasítást egy cikluson belül hajtanak végre, akkor a ciklus azonnal véget ér. A program elkezdi végrehajtani a ciklust követő utasítást. A nyilatkozat nagyon rövid:

break;

A következőképpen használhatja az breakutasítást az imént tárgyalt példa átírására:

Kód Magyarázat
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
A program beolvas egy sort a billentyűzetről, amíg be nem írja "exit".


2. folytassa az állítást

De breaknem ez az egyetlen Java utasítás, amely lehetővé teszi a hurok viselkedésének szabályozását. A Java-nak is megvan a continuenyilatkozata. continueHa egy utasítást cikluson belül hajt végre , a ciklus aktuális iterációja az ütemezés előtt véget ér.

A huroktest egyszeri végrehajtását a ciklus iterációjának nevezzük. Az continueutasítás megszakítja a ciklus aktuális iterációját, de az breakutasítással ellentétben nem fejezi be magát a ciklust. A nyilatkozat szintén rövid:

continue;

Az continueutasítás rendkívül kényelmes ciklusban, ha bizonyos helyzetekben ki akarjuk hagyni a ciklustörzs végrehajtását.

Feladat: Olyan programot szeretnénk írni, amely től ig számokat ír ki, 1de 20a -vel osztható számokat kihagyja 7. Így nézhet ki ez a kód.

Kód Magyarázat
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
A program számokat jelenít meg től 1-ig 20. Ha a szám osztható -vel (a -vel 7való osztás maradéka ), akkor kihagyjuk a szám megjelenítését.70

Valójában ez a kód nem fog működni , mert iörökre megragad a számnál 7. Végül is az continueállítás két másik állítást kihagy: System.out.println(i)és i++. Ennek eredményeként, ha elérjük az értéket 7, a változó inem változik, és végtelen ciklusban leszünk.

Szándékosan írtuk így a kódot, hogy illusztráljuk ezt a nagyon gyakori hibát. Hogyan javítsuk meg?

Itt két lehetőség van:

1. lehetőség: módosítás ivégrehajtás előtt continue, de utánai % 7

2. lehetőség:i mindig a ciklus elején növekszik . De akkor ia kiindulási értéknek 0.

1.opció 2. lehetőség
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);
}