본문 바로가기

언어/Java

[ 자바 / Java ] 반복문 while

반응형

 

 

Java의 while 문은 조건이 참(true)일 동안 계속해서 코드 블록을 반복 실행하는 제어 구조입니다. for 문과는 달리, while 문은 반복 횟수가 사전에 정해지지 않은 경우나 조건에 따라 반복을 제어할 때 유용합니다.

1. while 문 기본 구조

while 문은 다음과 같은 구조를 가집니다:

while (조건) {
    // 조건이 참일 동안 반복할 코드 블록
}
  • 조건: 반복문이 실행될 조건을 지정합니다. 조건이 참일 동안 코드 블록이 계속해서 실행됩니다.
  • 반복할 코드 블록: 조건이 참일 동안 반복적으로 실행되는 코드입니다.

2. while 문 예제

다음은 기본적인 while 문 예제입니다.

public class WhileLoopExample {
    public static void main(String[] args) {
        int count = 1;

        // 1부터 5까지 숫자를 출력하는 while 문
        while (count <= 5) {
            System.out.println("Count: " + count);
            count++;
        }
    }
}

설명:

  • count 변수가 1로 초기화됩니다.
  • while 문은 count가 5보다 작거나 같을 때까지 반복됩니다.
  • 각 반복에서 count의 값을 출력하고, count를 1씩 증가시킵니다.

3. 무한 루프

while 문을 잘못 사용하면 무한 루프에 빠질 수 있습니다. 무한 루프는 종료 조건이 없거나 조건이 항상 참일 때 발생합니다. 이는 프로그램을 중단하지 않으면 계속 실행되므로 주의가 필요합니다.

public class InfiniteLoopExample {
    public static void main(String[] args) {
        int count = 1;

        // 조건이 항상 참인 while 문 (무한 루프)
        while (true) {
            System.out.println("Count: " + count);
            count++;

            if (count > 5) {
                break; // count가 5보다 크면 루프 종료
            }
        }
    }
}

설명:

  • while (true)는 항상 참이므로 무한 루프를 만듭니다.
  • if 문을 사용하여 count가 5보다 커지면 break 문으로 루프를 종료합니다.

4. do-while

do-while 문은 while 문과 유사하지만, 조건을 검사하기 전에 코드 블록을 최소한 한 번 실행합니다. 이 구조는 코드 블록이 적어도 한 번은 실행되어야 하는 경우에 유용합니다.

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 1;

        // do-while 문을 사용하여 1부터 5까지 숫자를 출력
        do {
            System.out.println("Count: " + count);
            count++;
        } while (count <= 5);
    }
}

설명:

  • count 변수가 1로 초기화됩니다.
  • do 블록 내의 코드는 while 조건을 검사하기 전에 한 번 실행됩니다.
  • count가 5보다 작거나 같으면 do 블록이 반복됩니다.

5. while 문에서의 제어문

while 문에서도 breakcontinue 같은 제어문을 사용하여 반복의 흐름을 제어할 수 있습니다.

break

break 문은 while 문을 즉시 종료합니다.

public class WhileBreakExample {
    public static void main(String[] args) {
        int count = 1;

        // 1부터 10까지 숫자를 출력하지만 5에서 멈추는 while 문
        while (count <= 10) {
            if (count == 5) {
                break; // count가 5일 때 루프 종료
            }
            System.out.println("Count: " + count);
            count++;
        }
    }
}

설명:

  • count가 5에 도달하면 break 문이 실행되어 루프가 종료됩니다.
  • 1부터 4까지의 숫자만 출력됩니다.

continue

continue 문은 while 문 내에서 현재 반복의 나머지 부분을 건너뛰고 다음 반복을 시작합니다.

public class WhileContinueExample {
    public static void main(String[] args) {
        int count = 1;

        // 1부터 10까지 숫자를 출력하지만 5를 건너뛰는 while 문
        while (count <= 10) {
            if (count == 5) {
                count++;
                continue; // count가 5일 때 이번 반복을 건너뜀
            }
            System.out.println("Count: " + count);
            count++;
        }
    }
}

설명:

  • count가 5일 때 continue 문이 실행되어 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.
  • 5를 제외한 1부터 10까지의 숫자가 출력됩니다.

6. 사용자 입력을 사용하는 while

사용자로부터 입력을 받아 그에 따라 반복을 제어할 수도 있습니다.

import java.util.Scanner;

public class WhileUserInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input;

        // "exit"를 입력할 때까지 사용자 입력을 반복 처리
        while (true) {
            System.out.print("Enter a command (type 'exit' to quit): ");
            input = scanner.nextLine();

            if (input.equals("exit")) {
                break; // 사용자가 "exit"을 입력하면 루프 종료
            }

            System.out.println("You entered: " + input);
        }

        scanner.close();
    }
}

설명:

  • 사용자가 "exit"을 입력할 때까지 루프가 반복됩니다.
  • 사용자 입력을 읽고 출력합니다.
  • "exit"을 입력하면 break 문이 실행되어 루프가 종료됩니다.

7. 결론

Java의 while 문은 조건이 참일 동안 반복 작업을 수행할 수 있는 강력한 제어 구조입니다. while 문과 do-while 문을 통해 다양한 상황에서 반복 작업을 수행할 수 있습니다. 조건이 언제 참이 되는지 또는 몇 번 반복해야 하는지 명확하지 않은 경우 while 문이 특히 유용합니다. 또한 breakcontinue 문을 사용하여 반복의 흐름을 유연하게 제어할 수 있습니다.

반응형

'언어 > Java' 카테고리의 다른 글

[ 자바 / Java ] 반복문 Labeled Loop  (1) 2024.06.17
[ 자바 / Java ] 반복문 do while  (1) 2024.06.17
[ 자바 / Java ] 반복문 for  (1) 2024.06.17
[ 자바 / Java ] 조건문 switch 문  (1) 2024.06.17
[ 자바 / Java ] 조건문 if  (1) 2024.06.17