본문 바로가기

자바/뇌를 자극하는 JAVA

반복문을 계속하는 continue 문

반복문을 이용하여 여러 가지 로직을 구현하다보면, 반복문 안에 있는 나머지 부명령문들의 실행을 생략하고 그 다음 번 반복을 계속하도록 만들어야 할 경우도 있습니다.

이번에는 그럴 때 사용할 수 있는 continue 문의 작성방법을 알아보겠습니다.


가장 많이 사용하는 continuew 문의 형식은 다음과 같이 continue 키워드 단독으로 사용하는 형식입니다.


continue 문의 기본형식

continue;


반복문 안에서 이런 continue 문을 만나게 되면 실행의 흐름은 즉시 반복문의 다음 번 반복 과정으로 진행됩니다. 

그렇기 때문에 continue 문 다음에 있는 부명령문들은 실행되지 않게 됩니다.(일종의 건너띄기)

다음은 continue 문의 사용 예를 보여주는 프로그램입니다.


class ContinueExample {

 public static void main (String args[]) {

  for ( int cnt = 0; cnt < 10; cnt++ ) {     < ┐

   if ( cnt == 5 )                                     │ cnt가 5이면 for 문의 다음번 반복 과정을 계속합니다.

    continue;                                ─┘

   System.out.println(cnt);             -> cnt가 5일 때 이 행의 부명령문은 실행되지 않는다.

  }

  System.out.println("Done.")

 }

}


실행결과

0

1

2

3

4

6

7

8

9

Done.


위의 결과를 보면 0부터 9까지의 수 중 5가 출력되지 않았음을 확인할 수 있습니다.


while 반복문 안에서도 cintinue 문을 쓸 수 있지만, while 반복문의 반복과정은 for 문과 다르기 때문에 주의가 필요합니다.


class continueExample {

 public static void main(String args[]) {

  int cnt = 0;

  while ( cnt < 10) {           < ┐

   if ( cnt == 5 )                     cnt가 5이면 while 문의 다음번 반복 과정을 계속합니다.

    continue;                ─┘

   System.out.println(cnt);

   cnt++;

  }

  System.out.println("Done.")

 }

}


이 프로그램은 0부터 4까지 출련한 후 cnt 값이 5가 되면 continue 문을 실행합니다.

이 continue 문은 실행의 흐름을 while 문의 조건식으로 이동시키는데, 이 때 조건식은 5 < 10으로 만족되기 때문에 다시 while 문 안의 명령문들이 실행됩니다. 

그런데 여기서 fi 문의 조건식은 cnt == 5가 되기 때문에 continue 문이 다시 실행되어 무한 루프에 빠지게 됩니다.

그렇기 때문에 이 프로그램을 끝내기 위해서는 강제종료해야 합니다.


중첩된 반복문의 바깥쪽 반복을 계속하는 방법

중첩된 반복문 안에서 continue 문을 사용하면 안쪽에 있는 반복문에만 적용됩니다.

바깥쪽 반복문에도 적용시키기 위해서는 라벨을 사용합니다.


loop:                        -> for문에 붙여진 라벨

 for ( int cnt = 0; cnt < 100; cnt++ ) {

   System.out.println(cnt);

  if ( cnt == 5 )

   continue loop;        -> 라벨을 지정한 continue 문

 }


라벨을 붙이 continue 문의 예


class ContinueExample

 pubilc static void main(String args[]) {

outerLoop:

  for ( int row = 0; row < 3; row++) {      < ┐

   for ( int col = 0; col < 5; col++) {           

    if ((row == 1) && (col ==3))                   row가  1이고 col이 3이면 바깥쪽 for 문의 다음번 반복 과정을 계속합니다.

     continue outerLoop;                  ─┘

    System.out.rintln("(" + row + ", " + col + ")");

   }

  }

  System.out.println("Done.")

 }

}


실행결과

(0, 0)

(0, 1)

(0, 2)

(0, 3)

(0, 4)

(1, 0)

(1, 1)

(1, 2)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

Done.


위 결과를 보면 (1, 2) 다음에 바로 (2, 0)이 출력된 것을 볼 수 있습니다.

row가 1이고 col이 3일 때 바깥쪽 반복문의 다음 번 반복 과정으로 실행의 흐름이 진행되었기 때문에 이런 결과가 나온 겁니다.

'자바 > 뇌를 자극하는 JAVA' 카테고리의 다른 글

반복문을 빠져 나가는 break 문  (0) 2013.05.01
반복문  (0) 2013.04.28
switch 조건문  (0) 2013.04.28
if 조건문  (0) 2013.04.28
배열의 선언, 생성, 이용  (0) 2013.04.28