InputMismatch 런타임 에러 주요 원인

1. 잘못된 데이터 형식 입력

  • 예: nextInt()로 정수를 기대하는데 사용자가 문자열 입력
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();  // 여기서 "abc" 입력 시 오류 발생

 

 

2. 입력 구분자 문제 (Delimiter Issue)

  • Scanner는 기본적으로 공백(스페이스, 탭, 줄바꿈) 기준으로 입력을 구분하지만, 다른 구분자를 사용하는 경우 이를 명시적으로 설정해야 함.
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(",");  // 쉼표(,)로 구분
int number = scanner.nextInt();  // 쉼표 없는 입력 시 오류

 

 

3. 줄바꿈 문자 처리 문제

  • nextLine()과 nextInt() 같은 메서드를 섞어 사용할 때, 입력 버퍼에 남아 있는 줄바꿈 문자가 처리되지 않아 문제가 발생할 수 있음.
int number = scanner.nextInt();
scanner.nextLine();  // 버퍼 비우기
String text = scanner.nextLine();  // 정상 입력 처리

 

4. 로케일 설정 문제 (Locale Issue)

  • 소수점 구분자가 ,(쉼표)인 경우 (일부 국가 설정에서는 쉼표 사용)
Scanner scanner = new Scanner(System.in);
scanner.useLocale(Locale.US);  // 소수점으로 '.' 사용
double number = scanner.nextDouble();

 

'개발 지식' 카테고리의 다른 글

웹서버 애플리케이션 관점에서의 Thread Pool  (0) 2025.03.21
NullPointerException(NPE) 런타임 에러  (1) 2025.03.11
JVM 메모리 구조  (0) 2025.02.25
이스케이프 시퀀스  (0) 2025.02.22
NumberFormat 런타임 에러  (0) 2025.02.21