⚠️ Exception

[Exception] java.util.InputMismatchException

harveydent 2023. 5. 19. 10:20
728x90
package class01;

import java.util.Scanner;

public class Test01 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수입력) ");
		int num = sc.nextInt();
		System.out.println("num = " + num);			
		}
}
정수입력) abc
Exception in thread "main" java.util.InputMismatchException
              at java.base/java.util.Scanner.throwFor(Scanner.java:939)
              at java.base/java.util.Scanner.next(Scanner.java:1594)
              at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
              at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
              at TEST/test.Test01.main(Test01.java:11)
  • 스캐너 사용 시 입력된 값인 'abc' 가 정수 이외에 다른 타입의 자료형 이기 때문에 스캐너에서 범위를 초과하여 예외가 발생합니다.

 

  • InputMismatchException
    • Thrown by a Scanner to indicate that the token retrieved does not match the pattern for the expected type, or that the token is out of range for the expected type.
    • 검색된 토큰이 예상 유형의 패턴과 일치하지 않거나 토큰이 예상 유형의 범위를 벗어남을 나타내기 위해 Scanner에서 발생합니다.
  • 해결방법
    • try / catch 구문을 사용하여 InputMismatchException 예외처리를 해줍니다.
package class01;

import java.util.Scanner;

public class Test01 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
        try {
			System.out.print("정수입력) ");			
			int num = sc.nextInt();
			System.out.println("num = " + num);			
		} catch (InputMismatchException e) {
			System.out.println("정수를 입력해주세요.");
		}
	}
}
정수입력) 123
num = 123
정수입력) abc
정수를 입력해주세요.
728x90