이 튜토리얼은 Java의 continue와 라벨된 continue 문을 명확한 예제와 함께 설명하여 루프 흐름을 효율적으로 제어하는 데 도움을 줍니다.
루프로 작업할 때 때때로 특정 문장을 건너뛰거나 루프를 조기에 종료하고 싶을 수 있습니다. 그런 경우 break와 continue 문이 도구입니다.
break 문에 대해 알아보려면 Java break 방문. 여기서는 continue 문에 집중합니다.
Java continue
continue 문은 루프(for, while, do…while 등)의 현재 반복을 건너뜁니다. continue 문 이후 프로그램은 루프의 종료 검사로 점프합니다(for 루프의 경우 업데이트 표현식 포함).
구문은 다음과 같습니다:
continue;
참고: continue 문은 조건부 블록(예: if 문) 내부에서 가장 흔하게 사용됩니다.
Java continue 문 작동 방식
예제 1: Java continue 문
class Main {
public static void main(String[] args) {
// for 루프
for (int i = 1; i <= 10; ++i) {
// i 값이 4와 9 사이이면
// continue 실행
if (i > 4 && i < 9) {
continue;
}
System.out.println(i);
}
}
}
출력:
1
2
3
4
9
10
이 프로그램에서 for 루프는 각 반복마다 i 값을 출력합니다. i가 4보다 크고 9보다 작을 때 continue 문이 활성화되어 5, 6, 7, 8에 대해 println 문이 건너뛰어집니다.
예제 2: 양수 5개의 합 계산
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Double number, sum = 0.0;
// Scanner 객체 생성
Scanner input = new Scanner(System.in);
for (int i = 1; i < 6; ++i) {
System.out.print("숫자 " + i + " 입력: ");
// 사용자로부터 입력 받기
number = input.nextDouble();
// 숫자가 음수이면
// continue 문 실행
if (number <= 0.0) {
continue;
}
sum += number;
}
System.out.println("Sum = " + sum);
input.close();
}
}
출력:
숫자 1 입력: 2.2
숫자 2 입력: 5.6
숫자 3 입력: 0
숫자 4 입력: -2.4
숫자 5 입력: -3
Sum = 7.8
참고: 사용자 입력을 읽기 위해 Scanner 클래스를 사용했습니다. 더 알아보려면 Java Scanner 방문.
중첩 루프에서 Java continue
루프가 중첩되면 내부 루프 안의 continue는 해당 내부 루프의 현재 반복만 영향을 줍니다.
예제 3: 중첩 루프에서 continue
class Main {
public static void main(String[] args) {
int i = 1, j = 1;
// 외부 루프
while (i <= 3) {
System.out.println("외부 루프: " + i);
// 내부 루프
while(j <= 3) {
if(j == 2) {
j++;
continue;
}
System.out.println("내부 루프: " + j);
j++;
}
i++;
}
}
}
출력
외부 루프: 1
내부 루프: 1
내부 루프: 3
외부 루프: 2
외부 루프: 3
이 예제에서 내부 루프의 continue는 j가 2일 때 반복을 건너뛰어 "내부 루프: 2"가 출력되지 않게 합니다.
라벨된 continue 문
기본 continue 외에도 Java는 특정 루프로 흐름을 제어하는 라벨된 버전을 지원합니다. 구문은:
continue label;
이는 label로 식별된 루프의 현재 반복을 건너뛰게 합니다.
위 그림에서 라벨이 외부 루프를 대상으로 하여 continue가 해당 루프의 전체 반복을 건너뛸 수 있음을 보여줍니다.
예제 4: 라벨된 continue 문
class Main {
public static void main(String[] args) {
// 외부 루프를 first로 라벨링
first: for (int i = 1; i < 6; ++i) {
// 내부 루프
for (int j = 1; j < 5; ++j) {
if (i == 3 || j == 2)
// 외부 루프의 현재 반복 건너뛰기
continue first;
System.out.println("i = " + i + "; j = " + j);
}
}
}
}
출력:
i = 1; j = 1
i = 2; j = 1
i = 4; j = 1
i = 5; j = 1
여기서 라벨된 continue는 i가 3이거나 j가 2일 때마다 first라는 이름의 루프의 다음 반복으로 점프합니다.
참고: 라벨된 continue는 강력하지만 가독성을 떨어뜨릴 수 있습니다. 그런 필요가 생기면 흐름을 명확히 유지하기 위해 리팩토링을 고려하세요.