오늘의 삽질

오늘은 예외처리 강의를 들었는데 마침 지금 진행 중인 개인과제의 키오스크가 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);


    }
}

 

'TIL > WEEK3' 카테고리의 다른 글

개인과제 키오스크 완성  (0) 2023.06.01
개인과제 키오스크  (0) 2023.05.30

+ Recent posts