Deve.haeri

[Java/연습문제] Updown 게임하기 본문

Quiz/03.control

[Java/연습문제] Updown 게임하기

hhaeri 2020. 10. 11. 01:19

1. 문제 설명

 - 난수를 생선한 뒤 사용자 입력은 받아, 난수랑 일치하는지 확인한다. 일치 여부는 숫자가 큰지/작은지/맞는지로 알려준다.

 

2. 소스코드

package ex04_loop_quiz;

import java.util.Scanner;

public class Quiz10 {

	public static void main(String[] args) {
		//문제. updown 게임
		// 1 ~ 10000 사이 난수를 발생한다. 해당 난수를 맞추는 게임이며 입력 마다 "Up!" "Down!"을 출력한다.
	
		Scanner sc = new Scanner(System.in);
		
		int target = (int)(Math.random()*10000)+1; // 발생 된 난수
		int guess = 0; // 사용자 입력 값
		int times = 0; // 입력 횟수
		
		do {
			System.out.print("숫자를 입력하세요>>>");
			guess = sc.nextInt();	
			times ++;
			
			if (guess < 1 || guess > 10000) {
				System.out.println("1~10000사이만 유효합니다.");
				continue;
			}
			if (guess == target) {
				System.out.println("정답" + times + "만에 성공");
				break;
			} else if (guess > target) {
				System.out.println("Down!");
			}else {
				System.out.println("Up!");
			}
		}while (target != guess);

	}
}

3. 문제 해결 방법

 1) (Math.random()*1001) + 1로 1~ 1000사이 난수를 생성한다.

  - Math.random은 0~1 사이 실수 난수를 생성하기 때문에 원하는 범위 지정하기 위해서 시작 범위만큼 더하고 종료범위 만큼 곱한다.

 2) 1~1000사이 숫자가 아니면 다시 do-while 시작 부분으로 가는 if문을 작성한다.

 3) 입력값과 난수가 같으면 break에 의해 do-while문이 종료된다.

 4) 입력값과 난수가 같지 않으면 숫자범위에 따라 "up/down"이 출력 되며 다시 숫자를 입력받게된다.

 5) 숫자를 다시 입력 받게 되면 횟수를 누적하는 변수인 times가 증가된다.

 

4. 결과

Comments