Day 08(21.09.09) - Gomserker/Java-101 GitHub Wiki

09. 반복문(break, continue문)

1. break문

break문은 반복문인 for, while, do-while문의 실행을 중지할때 사용한다. 이전에 학습한 switch-case문에서도 break;를 사용하여 각 case를 컨트롤한 적이 있다. 아래는 반복문에서 break문을 사용했을 때의 실행 흐름이다.

for (contidion) {
   실행문
   break;
   (아래 실행문은 실행되지 않고 for문 밖으로 벗어난다.)
}

while (condition) {
   실행문
   break;
   (아래 실행문은 실행되지 않고 while문 밖으로 벗어난다.)
}

break문은 대개 if문과 같이 사용되어 조건식에 따라 for문과 while문을 종료할때 사용한다.
아래는 몇까지 더해야 50이 넘는지를 알려주는 프로그램이다..

import java.util.Scanner;

public class BreakTest {
 public static void main(String[] args) {

  Scanner input = new Scanner(System.in);

   int total = 0;
   int num = 0;
   while (true) { // true일때 실행문이 반복되므로 무한히 반복된다.
     total = total + num; //total에 num을 계속 더하고
     num++; //num은 1씩 증가한다.
     if (total > 50) { //total이 50을 초과하면
       break; // 반복문이 종료된다.
      }
     }
    System.out.println(num - 1);
   }
 }

만약 반복문이 중첩되어 있을 경우에 break문은 가장 가까운 반복문만 종료하고
바깥쪽 반복문은 종료시키지 않는다. 이 경우에 바깥쪽 반복문까지 종료시키려면 "labeling"을 사용하면 된다.

public class BreakOutterExample {
 public static void main(String[] args) {
   for(char upper = 'A'; upper <= 'Z'; upper++) {

     for(char lower = 'a'; lower <= 'z'; lower++) {
       
       System.out.println(upper + "-" + lower);
       if(lower == 'g') {
         break;
       }
      }
     }
    System.out.println("프로그램 실행 종료");
  }
}

위의 프로그램을 실행하면,소문자는 g까지만 실행되고 대문자가 다음 문자로 넘어간다.
이 프로그램에서 대문자 A 단계만 반복을 시키고 싶을 경우엔 아래와 같이 외부 반복문(대문자 반복)에 label을 붙인뒤, "break label명;"으로 사용하면된다.

public class BreakOutterExample {
 public static void main(String[] args) {
  Outter: for(char upper = 'A'; upper <= 'Z'; upper++) {

     for(char lower = 'a'; lower <= 'z'; lower++) {
       
       System.out.println(upper + "-" + lower);
       if(lower == 'g') {
         break Outter;
       }
      }
     }
    System.out.println("프로그램 실행 종료");
  }
}

2. continue문

continue문은 반복문(for, while, do-while)에서만 사용되는데, 블록 내부에서 continue문이 사용되면 for문의 증감식 또는, while과 do-while문의 조건식으로 이동한다. 실행 흐름은 다음과 같다.

for (contidion) {
   실행문
   break;
   (아래 실행문은 실행되지 않고 condition으로 돌아간다.)
}

while (condition) {
   실행문
   break;
   (아래 실행문은 실행되지 않고 condition으로 돌아간다.)
}

continue문은 반복문을 종료하지 않고, 계속 반복을 수행한다는 점에서 break문과 차이가 있다.
또한, break문과 마찬가지로 대개 if문과 같이 사용하는데, 특정 조건을 만족하는 경우에 continue문을 사용하여 그 이후의 문장을 실행하지 않고 다음 반복으로 넘어간다.(condition으로 돌아간다.) 아래는 1부터 10 사이의 짝수만 출력하는 프로그램이다.

public class ContinuePractice {
 public static void main(String[] args) {

   for (int i = 1; i < 11; i++) {
    if(i % 2 == 1) {
     continue;
    }
    System.out.println(i);
   }
  }
}

result

2
4
6
8
10

1에서 10까지의 정수를 출력하는 반복문에서, 만약(if) 홀수가 나오면(i % 2 ==1) 실행하지 않고 조건식으로 이동하기 때문에 홀수 결과는 도출되지 않는다.