오늘은 예외처리 강의를 들었는데 마침 지금 진행 중인 개인과제의 키오스크가 InputMismatchException을 다뤄보기 좋은 예제라 내가 짠 키오스크 코드로 예외처리에 도전해 봤다. 익셉션을 캐치하는 것까지는 잘 됐는데 catch 블락을 빠져나가면 프로그램을 그냥 끝내지 말고 다시 처음부터 실행시키고 싶어서 continue를 했더니 메인페이지에서 입력값은 안 받고 무한 루프되는 오류가 생겼다..
근데 마침 자바의 정석 8-7 연습문제가 이와 비슷한 케이스라 이걸로 먼저 연습해 보고 다시 도전해 봐야겠다.
연습문제 8-7
1~100 사이의 숫자를 맞추는 프로그램을 작성하시오. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 하시오.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int answer = (int) (Math.random() * 100) + 1;
int input = 0;
int count = 0;
do {
count++;
System.out.println("1과 100 사이의 값을 입력하세요 : ");
// input = new Scanner(System.in).nextInt();
try {
Scanner sc = new Scanner(System.in);
input = sc.nextInt();
} catch (Exception e) {
System.out.println("숫자를 입력해주세요.");
continue;
}
if (answer > input) {
System.out.println("더 큰 수를 입력하세요.");
} else if (answer < input) {
System.out.println("더 작은 수를 입력하세요.");
} else {
System.out.println("맞췄습니다.");
System.out.println("시도 횟수는 " + count + "번입니다.");
break;
}
} while (true);
}
}