Java hurkok
A programozási ciklusok lehetővé teszik, hogy egy utasításkészlet többször futhasson egy feltétel alapján. A Java-ban háromféle hurok létezik, amelyeket alább ismertetünk:
1. for hurok
A for ciklust akkor használjuk, ha ismerjük az iterációk számát (tudjuk, hogy egy feladatot hányszor szeretnénk megismételni). A for utasítás egy sorban tartalmazza az inicializálási feltételt és a növelést/csökkentést.
Példa: Az alábbi Java program egy for ciklust mutat be, amely 0 és 10 közötti számokat ír ki egyetlen sorban.
Java // Java program to demonstrates the working of for loop import java.io.* ; class Geeks { public static void main ( String [] args ) { for ( int i = 0 ; i <= 10 ; i ++ ) { System . out . print ( i + ' ' ); } } }
Kimenet
0 1 2 3 4 5 6 7 8 9 10
Szintaxis:
for (inicializálás; feltétel; növelés/csökkentés) {
// végrehajtandó kód
}
Az alábbi kép a for ciklus folyamatábráját mutatja be:
A for -loop folyamatábrája - Inicializálási feltétel : Itt inicializáljuk a használt változót. Ez jelzi a for ciklus kezdetét. Egy már deklarált változó használható, vagy egy változó csak helyi hurokba deklarálható.
- Tesztelési feltétel: A hurok kilépési feltételének tesztelésére szolgál. Logikai értéket kell visszaadnia. Ez egy Belépési vezérlőhurok is, mivel a feltételt a ciklusutasítások végrehajtása előtt ellenőrzik.
- Nyilatkozat végrehajtása : Ha a feltétel igazra lett értékelve, a ciklustörzsben lévő utasítások végrehajtásra kerülnek.
- Növekedés/csökkentés : A változó frissítésére szolgál a következő iterációhoz.
- Hurok lezárása : Amikor a feltétel hamissá válik, a ciklus véget ér, és ezzel az életciklusa végét jelzi.
Jegyzet : A for ciklusnak létezik egy másik formája is Továbbfejlesztett ciklushoz vagy (minden ciklushoz).
Továbbfejlesztett ciklushoz (mindegyikhez)
Ez a ciklus a tömbök vagy gyűjtemények közötti iterációra szolgál.
Példa : Az alábbi Java program egy Enhanced for ciklust mutat be (minden ciklushoz), amely egy tömbön keresztül iterál és neveket nyomtat.
Java // Java program to demonstrate // the working of for each loop import java.io.* ; class Geeks { public static void main ( String [] args ) { String [] names = { 'Sweta' 'Gudly' 'Amiya' }; for ( String name : names ) { System . out . println ( 'Name: ' + name ); } } }
Kimenet
Name: Sweta Name: Gudly Name: Amiya
Szintaxis:
for (dataType változó : arrayOrCollection) {
// végrehajtandó kód
}
2. míg Hurok
A while ciklust akkor használjuk, ha ellenőrizni akarjuk a feltételt a ciklustörzs végrehajtása előtt.
Példa: Az alábbi Java program egy while ciklust mutat be, amely 0 és 10 közötti számokat ír ki egyetlen sorban.
Java // Java program to demonstrates // the working of while loop import java.io.* ; class Geeks { public static void main ( String [] args ) { int i = 0 ; while ( i <= 10 ) { System . out . print ( i + ' ' ); i ++ ; } } }
Kimenet
0 1 2 3 4 5 6 7 8 9 10
Szintaxis:
while (feltétel) {
// végrehajtandó kód
}
Az alábbi kép egy while ciklus folyamatábráját mutatja be:
A while ciklus folyamatábrája - A While ciklus a logikai feltétel ellenőrzésével kezdődik. Ha a kiértékelés igaz, akkor a ciklustörzs utasítások végrehajtásra kerülnek, ellenkező esetben a ciklust követő első utasítás végrehajtásra kerül. Emiatt Entry vezérlőhuroknak is nevezik
- Miután a feltételt igazra értékelték, a ciklustörzsben lévő utasítások végrehajtásra kerülnek. Általában az utasítások frissítési értéket tartalmaznak a következő iterációhoz feldolgozott változóhoz.
- Amikor a feltétel hamissá válik, a hurok véget ér, ami az életciklusa végét jelzi.
3. do-while Loop
A do-while ciklus biztosítja a kódblokk végrehajtását legalább egyszer az állapot ellenőrzése előtt.
Példa : Az alábbi Java program egy do-while ciklust mutat be, amely 0 és 10 közötti számokat ír ki egyetlen sorban.
Java // Java program to demonstrates // the working of do-while loop import java.io.* ; class Geeks { public static void main ( String [] args ) { int i = 0 ; do { System . out . print ( i + ' ' ); i ++ ; } while ( i <= 10 ); } }
Kimenet
0 1 2 3 4 5 6 7 8 9 10
Szintaxis:
do {
// végrehajtandó kód
} while (feltétel);
Az alábbi kép egy do-while ciklus folyamatábráját mutatja be:
A do-while ciklus folyamatábrája - do while ciklus az utasítás végrehajtásával kezdődik. Nincs első alkalommal semmilyen állapot ellenőrzése.
- Az utasítások végrehajtása és a változó értékének frissítése után a feltétel igaz vagy hamis értékét ellenőrzi. Ha a kiértékelés igaz, a ciklus következő iterációja kezdődik.
- Amikor a feltétel hamissá válik, a hurok véget ér, ami az életciklusa végét jelzi.
- Fontos megjegyezni, hogy a do-while ciklus minden feltétel ellenőrzése előtt legalább egyszer végrehajtja az utasításait, és ezért egy példa a kilépési vezérlőhurokra.
Gyakori hurokhibák és azok elkerülése
Ha a ciklusokat nem megfelelően használják, buktatókat és hibákat okozhatnak, amelyek befolyásolják a kód teljesítményének olvashatóságát és funkcionalitását. Az alábbiakban felsorolunk néhány gyakori buktatót a hurkok esetében:
1. Végtelen hurkok
Ez az egyik leggyakoribb hiba, amikor bármilyen hurkot alkalmazunk, hogy soha nem lép ki, vagyis a ciklus végtelen ideig fut. Ez akkor fordul elő, ha az állapot valamilyen okból sikertelen.
A végtelen hurkok típusai:
- végtelen a Loop számára
- végtelen míg Loop
Példa: Itt mindkét példa a végtelen hurkokat mutatja be.
Infinite For Loop // Java program to demonstrate // the infinite for loop import java.io.* ; class Geeks { public static void main ( String [] args ) { for ( int i = 0 ; i < 5 ; i -- ) { System . out . println ( 'This loop will run forever' ); } } }
Infinite While Loop // Java Program to demonstrate // the infinite while loop import java.io.* ; class Geeks { public static void main ( String [] args ) { while ( true ) { System . out . println ( 'Basic example of infinte loop' ); } } }
Kimenet: Ha mindkét fenti kódot futtatja, TLE (Time Limit Exceeded) hibaüzenetet kap.
2. Egyenkénti hibák
Off-by-One hibákat az okozza, ha a hurok eggyel többször vagy kevesebbszer fut, mint amennyit akart. Ez alapvetően akkor történik, ha a hurokfeltétel nincs megfelelően beállítva.
Példa : Az alábbi Java program egy Off-by-One Error-t mutat be, ahol a ciklus 6-szor fut le, és azt vártuk, hogy 5-ször.
Java // Java Program to demonstrates Off-by-One Errors import java.io.* ; class Geeks { public static void main ( String [] args ) { for ( int i = 0 ; i <= 5 ; i ++ ) { System . out . print ( i + ' ' ); } } }
3. A hurkon belüli hurokváltozók módosítása
Ha a cikluson belül megváltoztatjuk a hurok feltételét (mint az i), akkor a ciklus bizonyos iterációkat kihagyhat, vagy olyan módon viselkedhet, ahogyan azt nem vártuk. Ez hibákhoz vagy váratlan viselkedéshez vezethet.
Példa : Az alábbi Java program bemutatja a cikluson belüli ciklusváltozó módosítását, ami miatt a ciklus kihagy bizonyos iterációkat és váratlanul viselkedik.
Java // Java program demonstrates // modification in i variable import java.io.* ; class Geeks { public static void main ( String [] args ) { for ( int i = 0 ; i < 5 ; i ++ ) { if ( i == 2 ) { // Modifies the loop variable and skips // the next iteration i ++ ; } System . out . println ( i ); } } }
4. Üres huroktest
Üres huroktörzs akkor fordul elő, ha egy ciklust iterációra írnak, de nem hajt végre semmilyen műveletet a cikluson belül. A hurok futtatása hasznos műveletek nélkül zavaró lehet.
Példa: Az alábbi Java program az Empty loop body-t mutatja be.
Java // Java program to demonstrates Empty loop body import java.io.* ; class Geeks { public static void main ( String [] args ) { for ( int i = 0 ; i < 10 ; i ++ ) { // Empty body no operations } } }
Ehhez nem jön létre kimenet, mert a hurok törzse üres.
Összefoglaló táblázat
| Hurok típusa | Mikor kell használni | Állapot ellenőrzés | Végrehajt legalább egyszer? |
|---|---|---|---|
| hurokhoz | Ha pontos iterációkat szeretne | A huroktest előtt Belépés-vezéreltnek hívják. | nem |
| míg hurok | Amikor először állapotot kell ellenőrizni. | A huroktest előtt Belépés-vezéreltnek nevezik. | nem |
| do-while hurok | Amikor futni kell legalább egyszer | A hurok utáni törzse Kilépés-vezéreltnek nevezik. | igen |
| minden hurok számára | Amikor az összes gyűjteményi elemet feldolgozza | Belső kezelésű | nem |
Kapcsolódó bejegyzések:
- hurokhoz
- míg hurok
- do-while hurok