본문 바로가기
BackEnd/Java

[Java] do-while문을 활용한 랜덤 숫자 맞추기 게임 (Math.random 메소드, Scanner 사용)

by ryuneng 2025. 1. 15.
반응형

# 목적

: JAVA의 do-while문과 Math.random() 메소드, Scanner를 이용하여 랜덤 숫자 1개의 정답을 찾아가는 초간단 게임 구현


do-while 반복문의 특징

: do와 while 사이에 있는 실행문을 최초로 한 번 실행 후
while의 조건 충족 시 do에 있는 내용을 반복 실행 시키고,
while의 조건 미충족 시 while 다음에 입력한 내용을 실행 시킨다.



# 코드 작성 예시

< 정답 조건 : 1~100 사이의 랜덤 숫자 >

public class DoWhileRandom {
	public static void main(String[] args) {
	//1. 1~100 랜덤숫자 변수 저장
    	int answer = (int) (Math.random()*100) +1;
        int input = 0;
	//2. 스캐너 입력 & 문제를 출제하는 텍스트 출력
        Scanner sc = new Scanner(System.in);
        System.out.print("1과 100 사이의 정수를 입력하세요.");
        System.out.println(" (정답 : " + answer + ")"); //정답 미리 알고 싶을 때 사용
	//3. do - 정답 틀렸을 경우 출력될 내용
        do {
        	input = sc.nextInt(); //최초로 한 번 실행
            if (input > answer) {
            	System.out.println("더 작은 수로 입력하세요.");
            } else if (input < answer) {
            	System.out.println("더 큰 수로 입력하세요.");
            }
	//4. while 조건 입력
		} while (input != answer);
        	System.out.println("정답입니다.");
            sc.close();
	}
}

- 콘솔 창 결과 :

1과 100 사이의 정수를 입력하세요. (정답 : 63)
80
더 작은 수로 입력하세요.
60
더 큰 수로 입력하세요.
70
더 작은 수로 입력하세요.
65
더 작은 수로 입력하세요.
63
정답입니다.


❓ 개인적으로 여기서 엄청 헷갈렸던 게

while의 조건을 도대체 왜 (input == answer) 이 아닌
(input != answer) 로 입력해야 하냐는 거였다.
(?? : input과 answer이 같아야 정답인 거잖아..?)

📌 그런데 특징을 자세히 살펴보면 이 궁금증을 금방 해결할 수 있다.

  1. while 뒤에 오는 조건 'input != answer' 이 맞을 때, (= 입력한 값과 정답이 다를 때)
    while 앞에 있는 do의 내용을 계속해서 실행시키고,
  2. while 뒤에 오는 조건 'input != answer'이 틀릴 때, (= 입력한 값과 정답이 같을 때)
    do 내용을 빠져나와 while 뒤에 입력한 내용 '정답입니다.' 가 실행된다는 것이다.


👉 한마디로 만약 조건을 (input == answer) 로 둔다면,

해당 조건이 틀릴 때 ! (=입력한 값 'input'과 정답 'answer'이 같지 않을 때)
while 뒤에 입력한 내용 '정답입니다' 가 실행되버린다는 것.
정답이 아니더라도 아무 숫자나 한 번 입력하면 바로 do 내용을 빠져나와버린다는 말이다.




(휴.. 정리하기 힘들다)



* Math.random() 메소드에 대해 알고 싶다면 아래 링크 클릭!

링크 : Math.random() 랜덤 함수

 

 


 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/Java-do-while-랜덤숫자맞추기게임