Gyakorlati alapok

A programozók rémálma: a kódugrás (a címkék /label/ használata)

 

Címke (label) + continue

 

Az előző fejezetben alaposan áttanulmányozhattuk a címkézett break utasítás használati eseteit. Ebben a fejezetben mindezt a continue utasítással kapcsolatban nézzük meg.

 

Adott egy probléma: egybeágyazott for ciklusokat használunk és a belső ciklusban vizsgálunk feltételeket. Ám teljesülése esetén mégsem akarjuk az egész cikluskört megszakítani, hanem a külső ciklusnak mennie kell tovább.

 

Vegyünk például 2 db egybeágyazott, 5 körből álló for ciklust, amelyeknek kiírjuk az iterátor értékeit (a külső ciklusban az iterátor int i, a belsőben pedig int j). Legyen a feltétel az, hogy a belső ciklusban nem írhatjuk ki a 2-nél nagyobb iterátor-értékeket (if(j == 2)). A continue siet ebben segítségünkre, hiszen az nem fogja megszakítani a teljes cikluskört, hanem csak a belsőt. Ellenőrizzük le mindezt az alábbi futtatható Java-kódban:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
loop:
    for(int i = 1; i <= 5; i++) {
        System.out.print("i = " + i + " ");
        for(int j = 1; j <= 5; j++) {
            System.out.print("j = " + j + " ");
            if(j == 2) {
                System.out.println();
                continue loop;
                }
            }
        }
    System.out.println("Vége a ciklusnak.");
    }
}

 

Végeredmény:

i = 1 j = 1 j = 2
i = 2 j = 1 j = 2
i = 3 j = 1 j = 2
i = 4 j = 1 j = 2
i = 5 j = 1 j = 2
Vége a ciklusnak.

 

Jól láthatjuk a continue és break közti működési különbséget: break hatására a legelső if ágba való kerüléskor le fog állni a teljes cikluskör:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
loop:
    for(int i = 1; i <= 5; i++) {
        System.out.print("i = " + i + " ");
        for(int j = 1; j <= 5; j++) {
            System.out.print("j = " + j + " ");
            if(j == 2) {
                System.out.println();
                break loop;
                }
            }
        }
    System.out.println("Vége a ciklusnak.");
    }
}

 

Végeredmény:

i = 1 j = 1 j = 2
Vége a ciklusnak.