CodeGym /행동 /JAVA 25 SELF /while 반복문: 소개와 사용상의 핵심 포인트

while 반복문: 소개와 사용상의 핵심 포인트

JAVA 25 SELF
레벨 4 , 레슨 1
사용 가능

1. 소개

프로그래밍에서는 동일한 동작을 여러 번 반복해야 하는 일이 자주 있습니다. 예:

  • 리스트의 모든 원소를 순회한다.
  • 사용자가 올바른 값을 입력할 때까지 키보드에서 값을 읽는다.
  • 1부터 100까지의 합을 계산한다.
  • 올바른 비밀번호가 입력될 때까지 사용자에게 비밀번호를 요청한다.

이러한 작업을 반복문 없이 구현하려고 하면 코드가 길고 지루해지며 확장성도 떨어집니다. 계산기 프로그램을 작성하면서 1부터 10까지의 합을 수동으로 더한다고 상상해 보세요:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... 이렇게 10번. 음.
반복문 없이 수동으로 반복하기 — 불편합니다!

끝나기도 전에 지루해질 겁니다! 해법 — 반복문. 반복되는 동작을 간결하고 이해하기 쉽게 표현할 수 있죠. 오늘은 가장 기본적이지만 엄청 유용한 반복문 — while을 알아봅니다.

2. while 반복문 익히기

문법과 기본 구조

while 반복문은 프로그래밍 세계의 “앵무새”입니다: 어떤 조건이 참인 동안 같은 코드 조각을 계속 반복합니다. 조건이 더 이상 참이 아니게 되면 앵무새는 조용해집니다(루프가 종료됩니다).

문법:

while (조건)
{
    // 루프 본문
}
while 반복문과 코드 블록의 표기

다이어그램

while 반복문의 동작을 이해하기 위한 간단한 블록 다이어그램입니다:

uml-while

3. 예제: while 반복문 실전

고전적인 카운터

1부터 5까지 세면서 값을 출력하는 간단한 프로그램을 만들어 봅시다:

int i = 1;
while (i <= 5)
{
    System.out.println("단계 № " + i);
    i++; // 카운터 증가를 잊지 마세요!
}
// 출력:
// 단계 № 1
// 단계 № 2
// 단계 № 3
// 단계 № 4
// 단계 № 5

주의: 변수 i를 증가시키는 것을 잊으면 루프가 절대 끝나지 않습니다(우리의 앵무새가 불멸의 영원 반복자가 됩니다). 이를 무한 루프라고 합니다 — 꽤 무섭죠.

원하는 값이 입력될 때까지 키보드 입력 받기

종종 반복문은 사용자가 올바른 답을 입력할 때까지 “밀어붙이는” 용도로 사용됩니다:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("비밀번호를 입력하세요: ");
    password = console.nextLine();
}
System.out.println("환영합니다!");

여기서는 당신이 마법의 "qwerty"를 입력할 때까지 프로그램이 비밀번호 입력을 요청합니다. 잊지 마세요: password = console.nextLine(); 줄을 지우면 루프는 다시 무한 루프가 됩니다(비밀번호를 묻기만 하고 입력을 읽지 않으므로 — 고장 난 로봇처럼 영원히 멈춥니다).

4. while 반복문의 종류와 사용 시나리오

일반적인 while 루프

이 루프는, 위에서 보았듯이, 첫 번째 반복 전에 조건을 확인합니다. 조건이 처음부터 거짓이라면 본문은 한 번도 실행되지 않습니다.

예시: 조건이 처음부터 거짓인 경우

int i = 10;
while (i < 5)
{
    System.out.println(i); // 절대 실행되지 않습니다!
}

당연한 얘기죠. 코드에 적힌 그대로 동작합니다.

중첩 while 루프

때로는 루프 안에 또 다른 루프가 필요합니다. 예를 들어 모든 행을 순회하면서 각 행의 모든 문자를 검사할 수 있습니다. 지금 단계에서는 다소 모험일 수 있지만, 간단히 예를 들어보면:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

중첩 루프는 몇 강 뒤에 자세히 다룹니다, 오늘은 살짝 겁만 주려는 거였어요 :)

무한 루프

어떤 루프는 종료되지만, 어떤 루프는 — 영원히 계속됩니다.

while (true)
{
    System.out.println("나는 영원해!");
}

이런 형태는 드물지만, 보통 백그라운드 프로세스(예: 서버 동작) 같은 곳에서 사용되며, 실제로도 쓰입니다.

5. 바보 같은 실수를 피하는 법: while에서 흔한 오류

프로그래밍에서 반복문은 전기와 같습니다 — 엄청 유용하지만, 안전 수칙을 알아야 합니다.

문제 1: 부주의로 인한 무한 루프

초보자들이 자주 범하는 실수는 조건에 영향을 주는 변수를 갱신하지 않는 것입니다. 그 결과 루프가 “무한히” 돌고, 프로그램을 강제로 중단해야 합니다(예: Ctrl + C).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // i++;  // 이런! i를 증가시키는 걸 잊었어요
}

문제 2: 잘못된 조건

때로는 개발자가 스스로 함정을 파기도 합니다. 조건이 애초에 절대 참이 되지 않아 루프가 전혀 실행되지 않는 경우죠.

int i = 10;
while (i < 5)
{
    System.out.println(i); // 이 코드는 절대 실행되지 않습니다.
    i++;
}

문제 3: 데이터 타입 오류

루프의 조건식은 항상 불리언 표현이어야 합니다 — 즉, 계산 결과가 true 또는 false여야 합니다.

int number = 5;
while (number) // 오류! int가 아니라 boolean이 필요합니다.
{
    number--;
}
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION