Q.
임의의 숫자를 생성한다.
다음과 같은 과정을 8회 반복한다.
플레이어로부터 숫자를 입력받는다.
입력받은 숫자가 임의의 숫자와 일치한다면 축하 메시지를 출력하고 반복문을 탈출한다.
입력받은 숫자가 임의의 숫자보다 작다면 작다는 메시지를 출력한다.
입력받은 숫자가 임의의 숫자보다 크다면 크다는 메시지를 출력한다.
매 회차마다 남은 횟수를 알려준다.
[경우의 수]
→ 반복문과 break, continue 등을 활용할 수 있다.
→ random 함수가 사용된다.
→ random 함수를 호출하는 것은 Random random = new Random(); 이다.
→ random 함수는 선언 후, int a = (int)(Math.random()*m)+n; 형태로 범위를 지정한다.
→ (int)는 기본형인 Random 함수의 형을 변환시켜주는 것이다.
ex)
int b = (int)(Math.random()*100) + 1;
package SelfStudy;
import java.util.Random;
import java.util.Scanner;
import sun.jvm.hotspot.debugger.posix.elf.ELFSectionHeader;
public class UpAndDownGame_04 {
public static void main(String[] args) {
//Q. 임의의 숫자를 생성한다.
//다음과 같은 과정을 8회 반복한다.
//-플레이어로부터 숫자를 입력받는다.
//입력받은 숫자가 임의의 숫자와 일치한다면 축하 메시지를 출력하고 반복문을 탈출한다.
//입력받은 숫자가 임의의 숫자보다 작다면 작다는 메시지를 출력한다.
//입력받은 숫자가 임의의 숫자보다 크다면 크다는 메시지를 출력한다.
Scanner scanner = new Scanner(System.in);
int a;
Random random = new Random();
int b = (int)(Math.random()*100) + 1;
int cnt = 8;
System.out.println("1~100 사이의 임의의 숫자를 입력해주세요. 기회는 8번입니다.");
for (int i = 1; i <= 8; i++) {
System.out.println();
cnt--;
if (cnt == 0) {
System.out.println("마지막 기회입니다! 신중하세요!");
}
System.out.print(i + "번째 기회 : ");
a = scanner.nextInt();
if (cnt==0) {
System.out.println();
System.out.println("아쉽네요!" + "정답은 " + b + "이었습니다!");
System.out.println("기회가 다 떨어졌습니다!");
break;
}
if (cnt != 0 && a==b) {
System.out.println("축하합니다! 정답입니다!!");
break;
} else if (cnt != 0 && a>b) {
System.out.println("더 작은 숫자입니다!");
System.out.println("기회가 " + cnt + "번 남았습니다!");
continue;
} else if (cnt != 0 && a<b) {
System.out.println("더 큰 숫자입니다!");
System.out.println("기회가 " + cnt + "번 남았습니다!");
}
}
System.out.println("게임을 종료합니다.");
}
}
※ 예외 처리부터 각 경우의 수에 맞는 경우를 잘 구분지어야 한다.
※ 남은 횟수 cnt가 0이 될 경우, 정답을 알려주고 그대로 종료되는 로직이다.
※ 단순히 입력값이 임의값보다 크다는 경우의 수만 지정해줄 경우, 기회가 떨어졌음에도 여전히 수를 추산하는 문구가 출력되어 새롭게 예외처리를 해야한다.
※ 따라서 cnt ==0 과 아래의 경우에는 cnt !=0을 넣어 서로 중복 출력되지 않도록 예외처리를 해주었다.
'프로그래밍 > JAVA' 카테고리의 다른 글
2021년 8월 10일 - 2차 배열 & 이중 for문 순위 구하기 & 오름차순 & 중복 제거 (0) | 2021.08.10 |
---|---|
2021년 8월 9일 - 심화복습 & Arrays & for each & String 기능 & 배열에서 숫자와 문자 찾기 (0) | 2021.08.09 |
2021년 8월 6일 - 복습 & Random (0) | 2021.08.06 |
2021년 8월 5일 - do while & 문자 예외 처리 & 심화 복습 (0) | 2021.08.05 |
2021년 8월 4일 - for & while & switch & CharAt & Substring & length & equals (0) | 2021.08.04 |
댓글