: JAVA의 do-while문과 Math.random() 메소드, Scanner를 이용하여 랜덤 숫자 1개의 정답을 찾아가는 초간단 게임 구현
: 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이 같아야 정답인 거잖아..?)
📌 그런데 특징을 자세히 살펴보면 이 궁금증을 금방 해결할 수 있다.
while 뒤에 오는 조건 'input != answer' 이 맞을 때, (= 입력한 값과 정답이 다를 때)
while 앞에 있는 do의 내용을 계속해서 실행시키고,
while 뒤에 오는 조건 'input != answer'이 틀릴 때, (= 입력한 값과 정답이 같을 때)
do 내용을 빠져나와 while 뒤에 입력한 내용 '정답입니다.' 가 실행된다는 것이다.
해당 조건이 틀릴 때 ! (=입력한 값 'input'과 정답 'answer'이 같지 않을 때)
while 뒤에 입력한 내용 '정답입니다' 가 실행되버린다는 것.
정답이 아니더라도 아무 숫자나 한 번 입력하면 바로 do 내용을 빠져나와버린다는 말이다.
(휴.. 정리하기 힘들다)
링크 : Math.random() 랜덤 함수