자바(Java)의 break 문은 반복문의 실행을 즉시 중단합니다. break 문이 실행되면 프로그램은 해당 반복문 이후에 작성된 다음 코드로 넘어갑니다. 만약 break 문이 중첩된 반복문 안에서 사용된다면, 가장 안쪽에 있는 반복문만 종료됩니다.
자바의 for 루프와 while 루프는 반복적인 작업을 자동화할 때 사용됩니다. 이러한 반복문을 다루다 보면 특정 조건이 충족되었을 때 반복문을 빠져나가야 하는 경우가 생깁니다. 바로 이럴 때 자바 break 문이 유용합니다. break 문은 반복문을 완전히 멈추는 데 사용됩니다.
이 글에서는 자바에서 break 문을 활용해 반복문의 흐름을 제어하는 방법을 살펴보고, 실제 예제를 통해 break 문의 동작 방식을 단계별로 확인해 보겠습니다.
자바 break 문이란?
자바의 break 문은 반복문의 실행을 중단하고, 프로그램이 반복문 바로 다음에 오는 문장으로 이동하도록 만듭니다. 반복문 실행 중 특정 조건이 충족되면 더 이상 반복을 계속하지 않고 멈추고 싶을 때 break 문이 유용하게 사용됩니다.
break 문의 기본 문법은 다음과 같습니다:
break;
break 문은 키워드 그 자체로 독립적으로 사용됩니다. 함수가 아니기 때문에 별도의 인수(argument)를 받지 않습니다. 프로그램이 break 문을 만나면 현재 진행 중인 반복(iteration)을 건너뛰고 반복문을 종료합니다.
자바 break 문 예제
사용자에게 1부터 10 사이의 숫자를 맞추라고 요청하는 프로그램을 만든다고 가정해 보겠습니다.
사용자가 정답을 맞히면 프로그램은 정답을 맞혔다는 축하 메시지를 출력해야 합니다. 정답이 아니라면 최대 5번까지 다시 추측할 수 있도록 허용해야 합니다.
이 프로그램을 구현한 코드는 다음과 같습니다:
import java.util.Scanner;
class GuessingGame {
public static void main(String[] args) {
int number = 6;
Scanner input = new Scanner(System.in);
for (int i = 0; i <= 5; i++) {
System.out.print("Guess a number between 1 and 10: ");
int guess = input.nextInt();
if (guess == number) {
System.out.println("You're correct!");
break;
}
}
}
}
위 코드를 실행하면 다음과 같은 결과가 출력됩니다:
Guess a number between 1 and 10: 1 Guess a number between 1 and 10: 6 You're correct!
정답을 맞히지 못하면 프로그램은 계속해서 숫자 추측을 요청합니다.
사용자가 이미 5번의 기회를 모두 사용했다면 프로그램은 종료됩니다. 하지만 정답을 맞히면 콘솔에 "You're correct!"라는 메시지가 출력되며 반복문이 종료됩니다.
예제 코드 상세 분석
코드를 하나씩 살펴보겠습니다. 먼저 사용자 입력을 받을 수 있게 해주는 java.util.Scanner 라이브러리를 임포트하고, GuessingGame이라는 클래스를 정의합니다. 이후 프로그램은 다음 순서로 동작합니다:
- number라는 자바 변수를 선언합니다. 이 변수에는 사용자가 맞혀야 할 정답 숫자가 저장됩니다.
- Scanner input을 초기화하여 프로그램 내에서 사용자의 입력값을 받아올 수 있도록 준비합니다.
- i가 5보다 커질 때까지 실행되는 for 루프를 생성합니다. 이 반복문은 사용자에게 총 5번의 정답 추측 기회를 제공합니다.
- 콘솔에 "Guess a number between 1 and 10:"이라는 안내 메시지를 출력합니다.
- input.nextInt()를 사용해 사용자의 추측 값을 받아 새 변수 guess에 저장합니다.
- 프로그램은 사용자의 추측 값이 정답을 담고 있는 number 변수와 같은지 비교합니다.
- guess가 number와 같으면 "You're correct!" 메시지가 콘솔에 출력되고, break 문에 의해 반복문이 즉시 종료됩니다.
- 그렇지 않다면 for 루프는 i가 5보다 커질 때까지 계속 실행됩니다.
즉, break 문은 실행되는 순간 for 또는 while 루프를 즉시 종료시킵니다.
중첩 반복문에서의 break 문
break 문은 자바 프로그램에서 가장 안쪽에 있는 반복문만 종료시킵니다. 예를 들어 for 루프 안에 while 루프가 있고, break 문이 while 루프 안에 있다면 종료되는 것은 while 루프뿐입니다.
다음 예제를 통해 이 동작 방식을 확인해 보겠습니다:
for (int; expression; updateCounter) {
// 코드
while (true) {
// 코드
if (condition_is_met) {
break;
}
}
}
먼저 for 루프가 초기화되고, 그 안에서 while 루프가 초기화됩니다. break 문이 실행되면 while 루프는 실행을 멈춥니다. 하지만 외부에 있는 for 루프는 프로그램이 끝날 때까지 계속 실행됩니다.
레이블 break 문(Labelled break)
break 문에 레이블(label)을 지정하면 레이블 break(labelled break)를 만들 수 있습니다. 일반적인 break 문이 가장 안쪽 반복문만 종료시키는 것과 달리, 레이블 break는 지정된 레이블에 해당하는 문장 전체를 종료시킵니다. 레이블 break의 문법은 다음과 같습니다:
break label_name;
예를 들어 다음과 같은 중첩 반복문이 있다고 가정해 보겠습니다:
for (int; expression; updateCounter) {
// 코드
for (int; expression; updateCounter) {
// 코드
while (true) {
if (condition_is_met) {
break;
}
}
}
}
특정 조건이 충족되면 두 번째 for 루프와 while 루프를 모두 종료하고, 첫 번째 for 루프로 돌아가 계속 실행하고 싶다고 해보겠습니다. 즉, 안쪽 반복문들만 종료하고 바깥쪽 루프는 계속 실행되기를 원하는 것입니다.
이럴 때 레이블 break 문을 사용하면 됩니다. 다음은 두 번째 for 루프와 while 루프를 한 번에 빠져나오는 코드입니다:
for (int; expression; updateCounter) {
// 코드
top_break:
for (int; expression; updateCounter) {
// 코드
while (true) {
if (condition_is_met) {
break top_break;
}
}
}
}
break top_break 문이 실행되는 즉시, 프로그램은 top_break 레이블이 붙은 지점까지 모든 반복문을 종료합니다. 이 경우 두 번째 for 루프와 while 루프가 모두 종료되고, 프로그램은 첫 번째 for 루프부터 계속 실행됩니다.
마무리
자바의 break 문은 반복문을 종료하는 역할을 합니다. 레이블 break 문은 반복문을 종료하고 레이블이 지정된 위치로 실행 흐름을 이동시킬 때 사용됩니다.
이 글에서는 break 문과 레이블 break 문을 사용해 프로그램의 흐름을 제어하는 방법을 알아보았습니다.
자바를 더 깊이 학습하고 싶으신가요? 추천 강의, 도서, 온라인 학습 자료 등을 활용해 체계적으로 학습 로드맵을 세워보세요. 꾸준한 실습과 프로젝트 경험이 실력 향상의 지름길입니다.