Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) continue 문 완벽 가이드: 반복문에서 특정 반복 건너뛰는 방법

자바의 continue 문은 루프 내 현재 반복을 중단하고 다음 반복으로 넘어가도록 만드는 제어문입니다. 이 문을 사용하면 루프 전체를 멈추지 않고도 특정 반복만 건너뛸 수 있으며, for 루프와 while 루프 모두에서 사용할 수 있습니다.

자바의 for 루프와 while 루프는 작업을 자동화하고 반복 실행하는 데 사용됩니다. 그런데 때로는 루프의 일부를 건너뛰고 프로그램이 계속해서 루프를 실행하도록 하고 싶은 경우가 생깁니다.

예를 들어, 학생이 시험에 합격했는지 불합격했는지 판정하는 프로그램을 만든다고 가정해 보겠습니다. 특정 학생의 성적 계산은 건너뛰고 싶을 수도 있습니다.

바로 이럴 때 continue 문이 유용합니다. 이 글에서는 자바 continue 문의 개념과 사용법을 실제 예제와 함께 자세히 살펴보겠습니다.

자바 continue 문이란?

자바 continue 문은 for 루프나 while 루프 같은 반복문에서 현재 진행 중인 반복을 건너뛰는 역할을 합니다. continue 문이 실행되면 루프의 다음 반복이 바로 시작됩니다.

continue 문의 기본 문법은 다음과 같습니다.

continue;

continue는 키워드(keyword)이므로 프로그램 내에서 단독으로 사용됩니다. 일반적으로 continue 키워드는 if 문과 함께 사용되어 특정 조건이 충족되었을 때 해당 반복을 건너뛰도록 처리합니다. continue 문은 for 루프와 while 루프 어디에서든 활용할 수 있습니다.

자바 continue 문 예제

5학년 수학 수업 학생들이 최근 치른 시험에 합격했는지 판정하는 프로그램을 만든다고 가정해 보겠습니다. 이 프로그램은 학생 이름 목록과 성적 목록을 순회하면서 각 학생의 이름과 합격 여부를 출력해야 합니다.

성적이 17점보다 높으면 합격, 17점 이하면 불합격입니다.

그런데 한 학생인 Lucy는 시험에 응시하지 않았습니다. 따라서 프로그램은 Lucy의 합격 여부 계산을 건너뛰어야 합니다.

다음 코드를 사용하면 Lucy를 제외한 모든 학생의 시험 결과를 계산할 수 있습니다.

class CalculateTestScores {
	public static void main(String[] args) {
		String[] students = {"Mark", "Bill", "Lucy", "Chloe"};
		int grades[] = {16, 25, 0, 19};

		for (int i = 0; i < students.length; ++i) {
			if (students[i].equals("Lucy")) {
				continue;
			}
			if (grades[i] > 17) {
				System.out.println(students[i] + " has passed their test with the grade " + grades[i] + ".");
			} else {
				System.out.println(students[i] + " has failed their test with the grade " + grades[i] + ".");
			}
		}
	}
}

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Mark has failed their test with the grade 16.
Bill has passed their test with the grade 25.
Chloe has passed their test with the grade 19.

코드 상세 분석

먼저 프로그램 코드를 담을 CalculateTestScores 클래스를 선언합니다. 그다음 두 개의 배열을 선언하는데, students 배열에는 학생 이름 목록이, grades 배열에는 해당 학생들의 성적이 저장됩니다.

이후 for 루프를 초기화하여 students 목록의 모든 요소를 순회합니다. 루프 내부에서 프로그램은 다음 작업을 수행합니다.

  1. 학생 이름이 Lucy와 같은지 확인 (students[i] == "Lucy")
    1. 이름이 Lucy라면 continue 문이 실행되어 프로그램이 다음 반복으로 넘어갑니다.
    2. 이름이 Lucy가 아니라면 프로그램은 해당 반복을 계속 진행합니다.
  2. 학생의 성적이 17보다 높은지 확인
    1. 17보다 높으면 콘솔에 "[학생 이름] has passed their test with the grade [성적]."이라는 메시지가 출력됩니다.
    2. 17 이하라면 콘솔에 "[학생 이름] has failed their test with the grade [성적]."이라는 메시지가 출력됩니다.

프로그램이 Lucy의 이름에 도달했을 때, continue 문 덕분에 그녀의 성적 계산 과정이 건너뛰어진 것입니다.

continue 문 활용 예제: 숫자 곱셈 게임

3학년 수학 수업용 게임을 만든다고 가정해 보겠습니다. 이 게임은 사용자가 입력한 1부터 10 사이의 세 숫자를 곱하는 기능을 가집니다. 만약 사용자가 10보다 큰 숫자를 입력하면, 해당 숫자는 곱셈에서 제외하고 싶습니다.

다음 코드로 이 작업을 구현할 수 있습니다.

import java.util.Scanner;

class MathGame {
	public static void main(String[] args) {
		int total = 1;
		Scanner input = new Scanner(System.in);

		for (int i = 0; i < 3; ++i) {
			System.out.print("Enter a number: ");
			int number = input.nextInt();

			if (number > 10) {
				continue;
			}

			total = total * number;
		}
		System.out.println("Total = " + total);
	}
}

프로그램에 2, 5, 4를 입력하면 다음과 같은 출력을 얻습니다.

Enter a number: 2
Enter a number: 5
Enter a number: 4
Total = 40

2 × 5 × 4는 40입니다. 입력된 모든 숫자가 10 이하이므로 continue 문은 실행되지 않았습니다. 반면 2, 5, 11을 입력하면 다음과 같은 결과가 나옵니다.

Enter a number: 2
Enter a number: 5
Enter a number: 11
Total = 10

11을 입력하는 순간 continue 문이 실행되어, 프로그램은 total 값과 11을 곱하는 과정을 건너뛰었습니다. 그 결과 최종 합계는 2 × 5인 10이 됩니다.

continue 문과 break 문의 차이

continue 문은 자바의 break 문과 함께 자주 비교됩니다. 두 제어문의 핵심적인 차이는 다음과 같습니다.

  • break 문: 자신이 속한 루프 전체를 즉시 종료합니다.
  • continue 문: 현재 반복 하나만 건너뛰고 루프는 계속 실행됩니다.

즉, 위 예제에서 11이 입력되었을 때 break 문이었다면 루프가 완전히 종료되어 나머지 입력을 받지 못했겠지만, continue 문이므로 루프가 정상적으로 계속 진행된 것입니다.

레이블(labelled) continue 문

레이블이 지정된 자바 continue 문을 사용하면 지정된 가장 바깥쪽 루프로 건너뛸 수 있습니다. 레이블 continue 문을 사용하려면 continue 키워드 뒤에 바깥쪽 루프에 부여된 이름을 붙여주면 됩니다.

레이블 continue 문은 프로그램의 외부 루프 내부에 있는 문장의 실행을 건너뜁니다. 루프 안에 또 다른 루프가 포함된 구조를 흔히 중첩 루프(nested loop)라고 부릅니다.

레이블 continue 문의 문법은 다음과 같습니다.

continue label_name;

두 개의 루프가 있는 프로그램에서 가장 바깥쪽 루프로 건너뛰고 싶다면 다음과 같이 코드를 작성할 수 있습니다.

label_name:
while (true) {
	while (true) {
		if (condition_is_met) {
			continue label_name;
		}
	}
}

내부 루프에서 조건이 충족되면 continue label_name;이 실행되어, 내부 루프가 아닌 외부 루프의 다음 반복으로 바로 이동합니다.

마무리

자바의 continue 문은 루프에서 특정 반복의 실행을 건너뛰는 데 사용됩니다. 이 글에서는 continue 문을 활용해 프로그램의 흐름을 제어하는 방법을 두 가지 예제와 함께 살펴보았고, 더 나아가 레이블 continue 문의 기본 개념까지 다루었습니다.

핵심을 정리하면 다음과 같습니다.

  • continue 문은 현재 반복만 건너뛰고 루프는 계속 실행합니다.
  • break 문은 루프 전체를 종료한다는 점에서 continue와 다릅니다.
  • 중첩 루프에서는 레이블 continue 문을 사용해 바깥쪽 루프로 이동할 수 있습니다.

이제 여러분도 자바 continue 문을 프로처럼 활용할 준비가 되었습니다. 자바를 더 깊이 학습하고 싶다면 체계적인 학습 로드맵을 참고해 보세요!