본문 바로가기
Java

Scanner input 타입 체크하기!

by GGShin 2022. 5. 30.

Scanner로 input을 받을 때, 원하지 않는 타입이 들어와 런타임에러가 발생하는 경우가 있습니다. 

특히나 int, double, long과 같은 타입의 변수에 String 또는 맞지 않는 타입이 들어오게 되면 에러가 발생하게 됩니다. String type 변수인 경우는 숫자를 입력해도 자동적으로 String으로 변환해서 인식을 하는데 숫자 type은 그럴 수 없기 때문입니다.

 

이런 사항을 미연에 방지하기 위해서는 타입체크가 필수인데요!

방법은 굉장히 간단합니다 ☺️👏 바로 hasNextInt() method를 사용하면 됩니다. (type에 따라 hasNextDouble(), hasNextLong() 등 맞춰서 사용하면 됩니다.)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Scanner s = new Scanner(System.in);
System.out.print("번호를 입력하세요: ");
 
//input된 value가 int type인지 .hasNextInt()로 확인해줍니다
while(!s.hasNextInt()) { //int type이 아닌 경우 while loop이 작동됩니다.
        
    System.out.print("숫자로 입력해주세요: ");
 
    s.next(); //s.next를 안넣어 주면 무한루프!!
 
}
 
//제대로 int type input이 들어오면 비로소 inputNum 변수에 값이 할당됩니다!
int inputNum = s.nextInt();
s.nextLine();
 
 
cs

 

위의 예시처럼 while loop을 사용해서 반복적으로 input할 수 있도록 해주면 되는데요, 

여기서 중요한 것은 s.next()를 써줘야 한다는 것입니다. 만약에 빠트리면 "숫자로 입력해주세요: " 가 계속해서 출력되게 됩니다.

 

원하는 int type의 input이 들어오면 그때야 비로소 inputNum 변수에 값이 할당되고,

프로그램이 이어서 동작하게 됩니다!

 

생각보다 간단하죠?

코딩 하시는데 도움이 되었으면 좋겠습니다!

감사합니다. ☺️

 

 

반응형