☕️JAVA
[JAVA] 자바 0~99사이 랜덤 숫자 맞히기 게임
Cocoon_
2021. 1. 10. 19:31
반응형
랜덤 함수를 이용하여 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
게임이 종료되었습니다.
반응형