에러/JAVA
[에러] <JAVA> while문 안에서 catch문으로 InputMismatchException을 처리할 때 무한 루프가 발생하는 문제
KONI_LEE
2023. 12. 8. 14:37
문제가 발생한 코드
Scanner sc = new Scanner(System.in);
int n = 0;
while (true) {
try {
System.out.println("정수를 >>");
n = sc.nextInt();
if (n < 0 || n > 10) {
System.out.println("1~10사이로 입력해주세요!");
} else {
System.out.println(n + "을 입력했습니다.");
break;
}
} catch (InputMismatchException e) {
System.out.println("정수를 입력해주세요!");
}
}
콘솔 출력

원인
- 처음에 입력한 문자열 값을 저장한 버퍼메모리를 비우지 않았기 때문이다.
해결
- 버퍼를 비워야한다.
해결 코드
} catch (InputMismatchException e) {
System.out.println("정수를 입력해주세요!");
sc.nextLine();
}