..

Search

21) 기타 제어문

21) 기타 제어문

기타 제어문


루프의 제어

일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안에 있는 모든 명령문을 실행합니다.

하지만 continue 문과 break 문은 이러한 일반적인 루프의 흐름을 사용자가 직접 제어할 수 있도록 도와줍니다.


continue 문

continue 문은 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 해줍니다.

보통 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 자주 사용됩니다.

 

다음 예제는 1부터 100까지의 정수 중에서 5의 배수와 7의 배수를 모두 출력하는 예제입니다.

예제

for (int1; i <= 100; i++) {

    if (i == 0 ||== 0) {

        System.out.println(i);

    } else {

        continue;

    }

}

코딩연습 ▶

실행 결과

5

7

10

14

15

...

95

98

100


break 문

break 문은 루프 내에서 사용하여 해당 반복문을 완전히 종료시킨 뒤, 반복문 바로 다음에 위치한 명령문을 실행합니다.

즉 루프 내에서 조건식의 판단 결과와 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용합니다.

 

다음 예제는 1부터 100까지의 합을 무한 루프를 통해 구하는 예제입니다.

예제

int num = 1, sum = 0;

 

while (true) { // 무한 루프

    sum += num;

    if (num == 100) {

        break;

    }

    num++;

}

System.out.println(sum);

코딩연습 ▶

실행 결과

5050


이름을 가지는 반복문(break with label)

일반적인 break 문은 단 하나의 반복문만을 빠져나가게 해줍니다.

따라서 여러 반복문이 중첩된 상황에서 한 번에 모든 반복문을 빠져나가거나, 특정 반복문까지만 빠져나가고 싶을 때는 다른 방법을 사용해야 합니다.

 

이때 사용할 수 있는 방법이 바로 반복문에 이름(label)을 설정하는 것입니다.

가장 바깥쪽 반복문이나 빠져나가고 싶은 특정 반복문에 이름을 설정한 후, break 키워드 다음에 해당 이름을 명시하면 됩니다.

그러면 해당 break 키워드는 현재 반복문이 아닌 해당 이름의 반복문 바로 다음으로 프로그램의 실행을 옮겨줍니다.

 

단, 이때 이름(label)은 가리키고자 하는 반복문의 키워드 바로 앞에 위치해야 합니다.

이름과 반복문의 키워드 사이에 명령문이 존재하면, 자바 컴파일러는 오류를 발생시킬 것입니다.

 

C언어나 C++과는 달리 자바에는 goto 문이 없습니다.
따라서 이렇게 반복문을 가리키는 이름(label)은 break 문이나 continue 문에만 사용될 수 있습니다.

 

다음 예제는 구구단 중에서 2단부터 4단까지를 출력하는 예제입니다.

예제

allLoop :

for (int2; i 10; i++) {

    for (int2; j 10; j++) {

        if (i == 5) {

            break allLoop;

        }

        System.out.println(i + " * " + j + " = " + (i j));

    }

}

코딩연습 ▶

실행 결과

2 * 2 = 4

2 * 3 = 6

2 * 4 = 8

2 * 5 = 10

...

4 * 6 = 24

4 * 7 = 28

4 * 8 = 32

4 * 9 = 36

 

위의 예제에서 변수 i의 값이 5가 되는 순간, 해당 프로그램의 제어는 두 개의 for 문을 모두 빠져나와 종료됩니다.


연습문제