“do while” 반복문은 코드 블록을 최소 한 번 실행한 후, 조건이 참인 동안 계속해서 반복적으로 실행하는 제어 구조입니다. “while” 반복문과 차이점은 조건이 처음부터 거짓이더라도 코드 블록은 최소 한 번은 실행합니다.
◎ 구문 |
do { // 코드 블록 } while (조건); l “코드 블록”: 반복적으로 실행될 문장들의 집합입니다. l “조건”: 반복 여부를 결정하는 논리 표현식입니다. |
◎ 예제 1. 주사위 게임 |
주사위 숫자인 1~6 사이의 값을 랜덤으로 출력하는데 사용자에게 주사위를 계속 굴릴지 계속해서 물을 때 do while 을 사용한 예제입니다. while 문의 조건은 “answer.equalsIgnoreCase("y")”로 사용자가 "y"를 입력했는지 확인합니다. n 을 눌러 종료하면 “System.out.println("총합: " + total)”: 주사위 굴린 결과의 총합을 출력합니다.
int dice;
int total = 0;
do {
dice = (int) (Math.random() * 6) + 1;
System.out.println("주사위 눈금: " + dice);
total += dice;
System.out.print("계속 주사위를 굴릴까요? (y/n): ");
String answer = System.console().readLine();
} while (answer.equalsIgnoreCase("y"));
System.out.println("총합: " + total);
[출력]
“주사위 눈금: 5
계속 주사위를 굴릴까요? (y/n): y
주사위 눈금: 3
계속 주사위를 굴릴까요? (y/n): y
주사위 눈금: 6
계속 주사위를 굴릴까요? (y/n): n
총합: 14”
◎ 예제 2. 사용자 입력값 유효성 검사 |
사용자에게 숫자만 입력 받고 싶을 때 사용할 만한 예제입니다. do while 문을 사용해서 사용자가 입력한 값을 “!input.matches("[0-9]+")”로 판단하고 문자열이 숫자인지 검사합니다. 만약 숫자가 아니라면 다시 반복을 진행합니다.
String input;
do {
System.out.print("숫자를 입력하세요 (0 to quit): ");
input = System.console().readLine();
} while (!input.matches("[0-9]+"));
int number = Integer.parseInt(input);
System.out.println("입력된 숫자: " + number);
[출력]
“숫자를 입력하세요 (0 to quit): a
숫자를 입력하세요 (0 to quit): 123
입력된 숫자: 123”
◎ 예제 3. 파일 읽기 |
“Scanner” 클래스를 사용하여 "input.txt" 파일을 읽습니다. 파일의 내용은 “do while” 루프를 사용하여 파일 끝에 도달할 때까지 각 라인을 읽고 출력합니다. do while 에 사용한 조건문으로 파일의 내용에서 읽을 라인이 더 있는지 “scanner.hasNextLine()”코드로 확인합니다. 마지막에 파일을 읽을 때 사용한 “scanner.close()”파일 스캐너를 닫습니다.
import java.util.Scanner;
public class FileReadExample {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(new File("input.txt"));
int lineNumber = 0;
do {
lineNumber++;
String line = scanner.nextLine();
System.out.println("[" + lineNumber + "] " + line);
} while (scanner.hasNextLine());
scanner.close();
}
}
[출력]
“[1] This is the first line.
[2] This is the second line.
[3] This is the third line.”
◎ 예제 4. 무한 루프 주의점 |
반복문에서 주의할 것은 무한 반복에 빠지는 오류입니다. do while 반복문은 조건을 충족시키지 않아도 최소한 한 번은 반복됩니다. 따라서 조건을 신중하게 설정하지 않으면 무한 루프에 빠질 수 있습니다.
예제에서는 사용자로부터 1부터 100 사이의 짝수를 입력받습니다. 사용자가 조건에 맞지 않는 숫자를 입력하면 프로그램이 메시지를 출력하고 사용자로부터 다시 입력을 받습니다. 이렇게 함으로써 무한 루프에 빠질 수 있는 위험을 줄이고 조건을 갱신하는 방법을 보여줍니다.
import java.util.Scanner;
public class DoWhileExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number;
boolean validInput;
do {
System.out.print("1부터 100 사이의 짝수를 입력하세요: ");
number = scanner.nextInt();
// 입력된 숫자가 1부터 100 사이의 짝수인지 확인
validInput = (number >= 1 && number <= 100) && (number % 2 == 0);
if (!validInput) {
System.out.println("잘못된 입력입니다. 다시 입력하세요.");
}
} while (!validInput);
System.out.println("입력된 짝수: " + number);
}
}
'자바(JAVA)' 카테고리의 다른 글
자바(Java) for 문 이용해서 피라미드, 역 피라미드 만드는 방법 (2) | 2024.08.04 |
---|---|
자바(Java) 실행대기 함수 Sleep 와 Wait 함수 차이와 구현 방법 (0) | 2024.04.08 |
깃허브(GitHub) 소스 업데이트 로그인 Token 생성하기 (0) | 2024.04.05 |
자바(Java) Scanner 클래스 사용하기 (0) | 2024.04.03 |
자바(Java) while 반복문 사용하기 (0) | 2024.03.27 |
자바(Java) 버전 확인하고 최신으로 업데이트 하는 방법 (1) | 2024.03.26 |
자바(Java) for 문 사용하기 (1) | 2024.03.26 |
자바(Java) switch case 구문 사용하기 (0) | 2024.03.25 |