728x90
반응형
숫자게임 반복
숫자가 나오지 않을 경우 try - catch로 게임을 재시작하도록 만드는 프로그램
아래의 코드처럼 do-while을 사용하였고 Scanner 함수를 사용하여 일반적인 숫자입력게임을 만들었다.
차이점(애먹었던 점)
- Scanner 클래스를 try문안에 써주어야 정상작동된다.
- 새로운 Scanner의 메모리가 할당되고 생성자를 통해 전에 넣어주었던 값을 초기화를 시켜야 무한반복을 막아준다.
- catch구문에는 오류가 날 경우 출력하고 싶은 문구를 적고 continue를 써주면 반복문이 다시 반복된다.
public static void main(String[] args) {
Random r = new Random();
int ran = r.nextInt(100)+1;
System.out.println(ran);
int count = 0;
int n = 0;
do {
try {
System.out.println("100 이하의 숫자만 입력해주세요");
n = new Scanner(System.in).nextInt();
// try문에 new Scanner로 클래스명을 계속 새로 실행해줌으로써 무한반복을 막아주었다.
// 만약 Scanner를 do 반복문 전에 미리 선언했다면 객체가 생성되어있으므로 반복문이 무한실행되게 된다.
}
catch (Exception e) {
System.out.println("숫자만 입력해주세요");
continue;
// 위의 nextInt로 인한 오류 발생 시 continue로 다시 반복문 반복
}
if(ran>n) {
System.out.println("up");
count++;
}
else if(ran<n) {
System.out.println("down");
count++;
}
else {
System.out.println("정답!");
System.out.println("시도 횟수: " + (count+1));
break;
}
}
while(true);
}
}
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바의 정석 9장 (24일차) - String 클래스 (0) | 2022.02.15 |
---|---|
자바의 정석 9장 (24일차) - Object 클래스(equals, toString, hashCode) (0) | 2022.02.15 |
자바의 정석 8장 (22일차) - 사용자 정의 예외처리 & 예외 되던지기 & 연결된 예외 처리(Chained Exception) (0) | 2022.02.13 |
자바의 정석 8장 (21일차) - 메서드에 예외 선언 & finally (0) | 2022.02.10 |
자바의 정석 8장 (20일차) - 프로그램 오류 (0) | 2022.02.09 |