"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 |
---|---|
|
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 isExit
változó a következő lesz , true
a ciklus feltétele és a ciklus véget ér."!isExit
false
"Így van. Tehát a Java-nak van egy speciális break
utasítása, amely lehetővé teszi az ilyen logika egyszerűsítését. Ha egy break
utasí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 break
utasítást az imént tárgyalt példa átírására:
Kód | Magyarázat |
---|---|
|
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 break
ez 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 continue
hajt 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 continue
utasítás megszakítja a ciklus aktuális iterációját, de az break
utasí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 continue
utasí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 break
a é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, 20
kivé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 |
---|---|
|
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 continue
utasí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ó i
leá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 i
végrehajtás előtt continue
, de utánai % 7
2. lehetőség:i
mindig a ciklus elején növekszik . De akkor i
a kiindulási értéknek 0
.
1.opció | 2. lehetőség |
---|---|
|
|
"Kiváló! Megpróbálom nem elkövetni ezt a hibát."
– Emlékszem az ígéretedre!