[Java] 이름 붙은 반복문

Hoplin·2023년 1월 1일
0

자바의 반복문에는 for, while, do~ while이 존재한다. 그리고 반복문 내에서 반복문을 제에하기 위해서 continue, break를 사용할 수 있다. 다른 언어들과 달리, 자바의 반복문에 특이한 특징 하나가 있다. 바로 이름 붙은 반복문 이다.

중첩된 반복문에서 가장 안에있는 break는 최상위 반복문을 벗아나지 못한다. 이런 경우 중첩 반복문 앞에 이름을 붙이고 break, continue를 통해서 제어를 해줄 수 있다.

public class Main{
    public static void main(String[] args){
        Loop1 : for(int i = 1; i <= 10; i++){
            if(i % 3 == 0){
                continue Loop1;
            }
            for(int j = 1;j <= 10;j++){
                if(i == 7 && j == 2){
                    break Loop1;
                }
                if(j % 5 == 0){
                    continue;
                }
                System.out.printf("%d x %d = %d%n",i,j,i*j);
            }
        }
    }
}

위 코드를 보면 최상위 반복문에 Loop1이라는 이름을 붙인것을 알 수 있다. 그리고 아래와 같은 조건으로 제어를 한다

  • 만약 i가 3의 배수라면, 최상위 반복문 Loop1을 뛰어넘는다
  • 만약 j가 5의 배수이면, 내부 반복문을 뛰어넘는다
  • 만약 i가 7이고, j가 2라면, 최상위 반복문 Loop2를 뛰어넘는다

반복문을 각각 명시하는 코드로 작성해 줄 수 도 있다. 외부 반복문을 outer라는 이름으로, 내부 반복문을 inner라는 이름으로 지정하여 작성한 코드이다.

public class Main{
    public static void main(String[] args){
        outer : for(int i = 1; i <= 10; i++){
            if(i % 3 == 0){
                continue outer;
            }
            inner:
            for(int j = 1;j <= 10;j++){
                if(i == 7 && j == 2){
                    break outer;
                }
                if(j % 5 == 0){
                    continue inner;
                }
                System.out.printf("%d x %d = %d%n",i,j,i*j);
            }
        }
    }
}

결과는 아래와 같다

1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
7 x 1 = 7
profile
더 나은 내일을 위해 오늘의 중괄호를 엽니다

0개의 댓글