Programming/JAVA

[JAVA] 이름 붙은 반복문 (Labeled-Loop)

읁; 2024. 5. 17. 19:20

이름 붙은 반복문 (Labeled-Loop)

Java 에서는 반복문에 이름을 지정해 사용할 수 있다!

반복문이 여러 번 중첩되어 있을 때, 반복문 각각에 이름을 붙여주어

break; 와 continue;가 작동할 범위를 지정해줄 수 있다.

 

 

구현

 

먼저, 일반적인 for문이다.

public static void main(String[] args) {

    for (int i = 1; i <= 2; i++) {
        System.out.println("첫 번째 for문 : " + i);
        
        for (int k = 1; k <= 10; k++) {
            if(k==3) break;
            System.out.println("두 번째 for문 : " + k);
        }
        
    }
}


------- 출력 결과 -------
첫 번째 for문 1
두 번째 for문 1
두 번째 for문 2 // k가 3이 되었기 때문에, 안쪽 for문을 벗어난다.
첫 번째 for문 2
-------------------------

 

 

k가 3이 되었기 때문에, break; 문과 가장 가까운 for문 ( = 안쪽 for문 ) 을 벗어난 후,

가장 바깥 쪽의 for문을 실행한다.

 


 

 

다음은, 바깥 for문에 LoopA라는 이름을 붙이고,

안 쪽에 있는 for문의 k가 3이 되었을 때 LoopA를 break 하도록 해보자.

public static void main(String[] args) {

    LoopA:
        for (int i = 1; i <= 2; i++) {
            System.out.println("첫 번째 for문 : " + i);
            
            for (int k = 1; k <= 10; k++) {
                if(k==3) break LoopA; // LoopA를 break 하도록 지정해준다.
                System.out.println("두 번째 for문 : " + k);
        	}
            
    	}
}


------- 출력 결과 -------
첫 번째 for문 1
두 번째 for문 1
두 번째 for문 2
// k가 3이 되었기 때문에, LoopA로 지정된 가장 바깥쪽 for문을 break 하며
// "첫 번째 for문 2" 는 출력되지 않는다.
-------------------------

 

k가 3이 되었을 때, LoopA를 벗어나도록 지정해두었기 때문에

가장 바깥 쪽 for문이 break 된다.


 

break; 뿐만 아니라 continue로도 응용할 수 있다.

public static void main(String[] args) {

    LoopA:
        for (int i = 1; i <= 3; i++) {
            System.out.println("첫 번째 for문 : " + i);
            
            for (int k = 1; k <= 10; k++) {
                if(k==3) continue LoopA; // k가 2가 되면 LoopA로 돌아가도록 한다.
                System.out.println("두 번째 for문 : " + k);
        	}
            
    	}
}


------- 출력 결과 -------
첫 번째 for문 : 1
두 번째 for문 : 1
두 번째 for문 : 2
// k가 3이 될 때 LoopA로 돌아간다.
첫 번째 for문 : 2
두 번째 for문 : 1
두 번째 for문 : 2
// k가 3이 될 때 LoopA로 돌아간다.
첫 번째 for문 : 3
두 번째 for문 : 1
두 번째 for문 : 2
-------------------------

 

 

이는 for문 뿐만 아니라, while문과 do-while 문과 같은 모든 Loop문에 적용가능하다고 한다.


 

참고