반응형

 

랜덤 함수를 이용하여 0~99 사이의 임의의 정수를 생성하고 Up & Down을 통해서 숫자를 찾는 게임. 0~99 사이의 숫자의 경우 아무리 운이 안 좋아도 이분 탐색으로 7번 이내로 찾을 수 있기 때문에 각 게임당 기회는 5회로 제한을 하였습니다. 그리고 정수 외의 다른 문자가 입력될 시 try-catch문으로 예외처리를 할 수 있도록 코드를 짰습니다.

<코드>

package blog;
import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		
		boolean game = true;

		while(game)
		{
			System.out.println("Up & Down 게임입니다. 정답을 맞혀보세요. 기회는 5번입니다.");
			Random r = new Random();
			int k = r.nextInt(100); // 0~99까지의 임의의 정수 생성
			int n = 0;

			for (int i = 1; i <= 5; i++) 
			{
				System.out.print(i+">>");

				try {
					n = sc.nextInt(); // 숫자 입력

					if(n < 0 || n >99){
						System.out.println("잘못 입력하였습니다. 다시 입력해주세요.");
						i--;
						continue;
					}

					if(n == k) // 정답 시
					{
						System.out.println("축하드립니다 정답입니다.");
						break;
					}
					else if(n < k) // Up
					{
						System.out.println("Up");
					}
					else //(n > k) Down
					{
						System.out.println("Down");
					}
				} 
				catch (InputMismatchException e) {
					System.out.println("잘못 입력하였습니다. 다시 입력해주세요.");
					sc.next();
					i--;
					continue;
				}
			}

			if(n != k) 
			{
				System.out.println("아쉽습니다. 5회안으로 맞히지 못하였습니다.");
				System.out.println("정답은 "+k+" 였습니다.");
			}

			System.out.println("다시하시겠습니까?(y/n)");
			if(sc.next().equals("n"))
			{
				game = false;
				break;
			}
		}
		System.out.println("게임이 종료되었습니다.");
	}
}

<실행결과>

Up & Down 게임입니다. 정답을 맞혀보세요. 기회는 5번입니다.
1>>50
Up
2>>70
Up
3>>90
Down
4>>80
Up
5>>85
Down
아쉽습니다. 5회안으로 맞히지 못하였습니다.
정답은 81 였습니다.
다시하시겠습니까?(y/n)
y
Up & Down 게임입니다. 정답을 맞혀보세요. 기회는 5번입니다.
1>>50
Up
2>>75
Down
3>>67
Down
4>>63
Down
5>>61
Up
아쉽습니다. 5회안으로 맞히지 못하였습니다.
정답은 62 였습니다.
다시하시겠습니까?(y/n)
y
Up & Down 게임입니다. 정답을 맞혀보세요. 기회는 5번입니다.
1>>a
잘못 입력하였습니다. 다시 입력해주세요.
1>>-1
잘못 입력하였습니다. 다시 입력해주세요.
1>>101
잘못 입력하였습니다. 다시 입력해주세요.
1>>acdsvd
잘못 입력하였습니다. 다시 입력해주세요.
1>>50
Down
2>>25
축하드립니다 정답입니다.
다시하시겠습니까?(y/n)
n
게임이 종료되었습니다.

 

반응형

+ Recent posts