알아가기/Java

[Java] 잘못된 입력에 대해 exception 으로 재입력 유도

XEV 2022. 12. 26. 22:32

while 그리고 exception

사용자의 입력을 받을 때 프로그램이 정상적으로 작동하기 위한 조건에 맞지 않는 입력이 들어오면 exception 을 사용하여 재 입력을 유도한다.

이를 위해 while 과 try 그리고 continue 를 이용할 수 있다.

 

 

예를 들어 사용해 보면,

입력은 숫자만 받아야 하는 조건이 있다.

숫자인지 문자인지 일단 입력받고 판별하기 위해 모든 입력을 문자로 입력받는다.

그리고 이를 숫자형으로 변환하는 과정에서 try 와 catch 를 사용하고 숫자가 맞다면 실행되고 있는 while loop 를 break 로 빠져나간다. 하지만, 입력 데이터에 문자가 섞여 있다면 catch exception 으로 분류되어 메시지가 출력되고 continue 를 만나게 되어 break 가 실행되지 못하여 다시 while loop 를 시작하게 된다. 이 반복은 숫자만 입력이 될 때까지 지속된다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class MyClass {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int number = 0;

        while (true) {
            System.out.print(" 숫자입력 >> ");
            String strNum = sc.next();

            try {
                number = Integer.parseInt(strNum);
            } catch (Exception e) {
                System.out.println(" 숫자가 아닌 글자있음.");
                continue;
            }
            break;
        }
        System.out.println("number = " + number);

        sc.close();
    }
}




//  숫자입력 >> 1c34
//   숫자가 아닌 글자있음.
//  숫자입력 >> 123d
//   숫자가 아닌 글자있음.
//  숫자입력 >> 1234
//   number = 1234