"Szia Amigo!

– Szia Ellie.

– Már tanultál hurkokat, és ez klassz.

"Egyetértek! Most már egyáltalán nem tudom, hogyan éljek nélkülük."

"Néha meg tudod csinálni nélkülük... De gyakrabban lesz szükséged rájuk. Ma arról a helyzetről fogunk beszélni, amikor idő előtt ki kell lépned egy körből."

– Úgy érted, amikor a hurok folytatásának feltétele igaz, de még mindig ki kell lépned a hurokból?

"Pontosan! Néha úgy hangzik, mintha már programozó lennél. Mindenesetre, hogy az ütemterv előtt kitörjön egy hurokból, használhatja a break utasítást. Vessen egy pillantást a következő példára:

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

"Értem. A program beolvassa a sorokat a konzolról. Ha beírod "exit", akkor a isExitváltozó a következő lesz , truea ciklus feltétele és a ciklus véget ér."!isExitfalse

"Így van. Tehát 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. Az utasítás nagyon rövid :

break;

"Íme, hogyan 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".

"Talán emlékezni fogok rá. Úgy érzem, jól fog jönni."

"De breakez nem az egyetlen Java utasítás, amely lehetővé teszi a ciklus viselkedésének szabályozását. A Java is rendelkezik ezzel az utasítással. Ha egy utasítást cikluson belül continuehajt végre , a ciklus aktuális iterációja az ütemezés előtt véget ér."continue

– Mit értesz iteráció alatt?

"A hurokiteráció a ciklustörzs egyik végrehajtása. Az continueutasítás megszakítja a ciklus aktuális iterációját, de az breakutasítástól eltérően magát a ciklust nem fejezi be. Az utasítás szintén rövid:

continue;

"Tehát, az continueutasítás használható ciklusban, ha "ki akarjuk hagyni" a ciklus bizonyos iterációinak végrehajtását?"

"Pontosan. Érti a különbséget breaka és között continue? Ha 20 nem ismétlődő számjegy közül hetest kell találnia, milyen hurok- és hurokmegszakítási utasítást használna?

"Hmm... végignézném az összes számot, és ha találok 7-et, akkor végrehajtanám a -t break."

1"Mi van, ha től ig számokat kell megjelenítenie, 20kivéve azokat a számokat, amelyek oszthatók -vel 7?"

"Nos, itt valószínűleg szükségem van rá continue, mert nem akarok kilépni a hurokból. De még mindig nem értem."

"Hadd mutassam meg, hogyan lehet megoldani ezt a problémát. Í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 7(a maradék osztás -val 7) 0 , akkor kihagyjuk a szám megjelenítését.

"Miért nézel rám ilyen gyanakodva, Ellie? Van itt valami fogás?"

"Nem lehet becsapni, Amigo! Valóban, ez a kód nem fog megfelelően működni . Megjeleníti az első 6 számjegyet, majd iörökre a számon marad 7. Végül is az continueutasí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ó ileáll, és végtelen ciklusban leszünk. Szándékosan írtam így a kódot egy nagyon gyakori hiba szemléltetésére."

– Hogyan javítsuk ki?

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

"Kiváló! Megpróbálom nem elkövetni ezt a hibát."

– Emlékszem az ígéretedre!