Java break 문: 사용법, 라벨된 break로 다중 루프 탈출하기
Java break 문
이 튜토리얼은 Java break 문, 문법, 라벨된 break를 사용한 정밀한 루프 제어 방법을 설명합니다.
루프로 작업할 때 반복의 나머지 문장을 건너뛰거나 루프 조건을 다시 평가하지 않고 루프를 완전히 종료해야 할 수 있습니다. break와 continue 문이 그런 제어를 제공합니다. 다음 튜토리얼에서 continue를 다룹니다.
break 문은 가장 안쪽 루프나 switch 구문을 즉시 종료하고, 프로그램 실행은 종료된 블록 다음 문장으로 계속됩니다.
주로 if…else 같은 조건부 로직과 결합하여 조기 종료 지점을 만드는 데 사용됩니다.
구문:
break;
break 문 작동 방식
예제 1: for 루프에서 break 사용
class Test {
public static void main(String[] args) {
// for 루프
for (int i = 1; i <= 10; ++i) {
// i 값이 5이면 루프 종료
if (i == 5) {
break;
}
System.out.println(i);
}
}
}
출력 :
1
2
3
4
루프는 1부터 4까지 값을 출력합니다. if 블록이 i를 확인하고 5와 같으면 break가 루프를 멈춥니다.
예제 2: 사용자 입력과 함께 while 루프에서 break
여기서 사용자가 음수를 입력할 때까지 입력된 숫자들의 합을 구합니다.
입력 읽기에 Scanner를 사용합니다. Scanner에 대한 자세한 내용은 Java Scanner 튜토리얼 참조.
import java.util.Scanner;
class UserInputSum {
public static void main(String[] args) {
Double number, sum = 0.0;
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("숫자를 입력하세요: ");
number = input.nextDouble();
if (number < 0.0) {
break;
}
sum += number;
}
System.out.println("Sum = " + sum);
}
}
출력 :
숫자를 입력하세요: 3.2
숫자를 입력하세요: 5
숫자를 입력하세요: 2.3
숫자를 입력하세요: 0
숫자를 입력하세요: -4.5
Sum = 10.5
while (true) 루프는 음수 값이 입력되어 break가 실행될 때까지 무한히 실행됩니다.
중첩 루프에서의 Break
중첩 루프에서 break는 가장 안쪽 루프만 종료합니다.
이미지는 내부 while 안의 break가 외부 루프로 이동함을 보여줍니다.
라벨된 Break 문
단순 break 외에도 Java는 외부 루프를 직접 종료할 수 있는 라벨된 변형을 제공합니다. 여러 수준의 중첩 루프를 빠져나와야 할 때 유용합니다.
라벨은 루프 앞에 위치하며 break label;은 해당 루프를 종료하고 그 뒤를 따르는 문장으로 점프합니다.
while (testExpression) {
// 코드들
second: while (testExpression) {
// 코드들
while(testExpression) {
// 코드들
break second;
}
}
// 제어는 여기로 점프
}
break second;가 실행되면 second로 표시된 루프가 끝나고 그 루프 다음에서 제어가 재개됩니다.
예제 3: 라벨된 Break 사용
class LabeledBreak {
public static void main(String[] args) {
first: for (int i = 1; i < 5; i++) {
second: for (int j = 1; j < 3; j++) {
System.out.println("i = " + i + "; j = " + j);
if (i == 2) break first;
}
}
}
}
출력 :
i = 1; j = 1
i = 1; j = 2
i = 2; j = 1
여기서 break first;는 외부 for 루프를 종료하므로 세 번째 줄 출력 후 프로그램이 멈춥니다.
break first;를 break second;로 바꾸면 내부 루프만 종료되고 외부 루프는 계속됩니다.
class LabeledBreak {
public static void main(String[] args) {
first: for (int i = 1; i < 5; i++) {
second: for (int j = 1; j < 3; j++) {
System.out.println("i = " + i + "; j = " + j);
if (i == 2) break second;
}
}
}
}
출력 :
i = 1; j = 1
i = 1; j = 2
i = 2; j = 1
i = 3; j = 1
i = 3; j = 2
i = 4; j = 1
i = 4; j = 2
참고 : break 문은 switch case도 종료합니다. 더 알아보려면 Java switch 문 튜토리얼 참조.