1. do-while 반복문 소개
상상해 보세요: 사용자가 마음속으로 생각한 숫자를 맞히는 프로그램을 작성하고 있습니다. 최소한 한 번은 숫자를 물어봐야 하고, 맞힐 때까지 요청을 반복해야 합니다. 조건을 미리 검사한다면, 일반적인 while은 아예 반복문에 진입하지 못할 수도 있습니다.
여기서는 do-while이 도움이 됩니다. while과 달리, 조건이 처음부터 거짓이어도 반복문의 본문을 최소 한 번은 실행합니다 — 구매와 상관없이 계산대에서 껌을 하나 받는 것과 비슷하죠.
do-while 문법
매우 간단합니다: Java에 키워드가 하나의 “한 쌍” 더 생긴 것뿐입니다.
do
{
// 반복문 본문: 이 코드는 최소 한 번 실행됩니다
}
while (uslovie);
do-while 반복문의 문법
조건 괄호 뒤 끝에 붙는 세미콜론 ;에 주의하세요! 일반적인 while에는 없지만 여기에는 있습니다 — 초보자가 자주 빠지는 고전적인 함정입니다.
do-while 반복문의 단계 설명
- 반복문 본문으로 진입(항상 최소 한 번).
- 조건 검사.
- 조건이 참이면 본문을 반복 실행.
- 조건이 거짓이면 반복문 종료.
2. 일반적인 while과의 차이
일반적인 while의 기본 동작 시나리오를 떠올려 봅시다:
while (uslovie)
{
// 반복문 본문
}
조건이 처음부터 거짓이면 본문은 한 번도 실행되지 않습니다!
이제 do-while 예시입니다:
do
{
// 반복문 본문
}
while (uslovie);
조건이 처음부터 거짓이어도 반복문 본문은 최소 한 번 실행됩니다!
코드로 차이를 보여 보겠습니다:
// 일반적인 while
int count = 0;
while (count > 0)
{
System.out.println("count = " + count);
count--;
}
// 아무것도 출력되지 않음
// do-while
int count2 = 0;
do
{
System.out.println("count2 = " + count2);
count2--;
}
while (count2 > 0);
// "count2 = 0"만 출력되는데, 조건은 거짓입니다!
가끔은 “이상하게” 느껴질 수 있지만, 사용자 입력과 데이터 검증에서는 바로 이런 동작이 필요합니다.
3. do-while의 실전 활용 시나리오
이 반복문이 가장 자주 쓰이는 곳은 어디일까요?
데이터 검증
대표적인 시나리오: 사용자에게 올바른 데이터를 입력하게 하고(예: 비밀번호는 최소 6자), 올바르게 입력될 때까지 요청을 반복합니다.
String password;
do
{
System.out.print("새 비밀번호를 입력하세요(최소 6자): ");
password = console.nextLine();
}
while (password.length() < 6);
System.out.println("비밀번호가 승인되었습니다!");
사용자가 곧바로 긴 비밀번호를 입력하더라도 반복문 본문은 최소 한 번 실행됩니다.
콘솔 애플리케이션의 메뉴
자주 쓰는 패턴: 메뉴를 보여 주고 명령을 기다리며, 특정 종료 명령이 들어왔을 때만 종료합니다.
String command;
do
{
System.out.println("메뉴:");
System.out.println("1. 환영 메시지 표시");
System.out.println("2. 종료");
System.out.print("동작을 선택하세요: ");
command = console.nextLine();
if (command.equals("1"))
{
System.out.println("안녕, 세상!");
}
else if (!command.equals("2"))
{
System.out.println("알 수 없는 명령입니다.");
}
}
while (!command.equals("2"));
System.out.println("안녕!");
4. 표: while과 다른 반복문의 비교
| 반복문 유형 | 조건 검사 시점 | 본문이 실행될 수 있는 횟수 | 적합한 경우 |
|---|---|---|---|
|
진입 전 | 0회 이상 | 반복 횟수를 미리 알 수 없을 때 |
|
진입 후 | 1회 이상 | 본문을 최소 한 번은 실행해야 할 때 |
|
진입 전 | 0회 이상 | 반복 횟수를 알고 있을 때 |
GO TO FULL VERSION