"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 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 |
|---|---|
|
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 |
|---|---|
|
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 |
|---|---|
|
|
"Kiváló! Megpróbálom nem elkövetni ezt a hibát."
– Emlékszem az ígéretedre!
GO TO FULL VERSION