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