내일 배움 캠프의 야구게임 프로젝트 진행 중 catch 문에 접근하게 되면 무한 루프에 빠지는 문제를 발견했다.
내부에는 print와 scanner밖에 없었기에 더 이해가 안되서 찾아봤다.
try {
System.out.print("숫자를 입력해 주세요: ");
inputResultNum = scanner.nextInt();
} catch (Exception e) {
System.out.println("숫자만 입력 가능합니다.");
// 다시 재 입력을 받을 수 있도록 continue
continue;
}
찾아보니 scanner로 받은 값이 정상처리되지 않아 버퍼에 남아있게 되어 발생하는 문제였다.
아래처럼 에러 발생 시 scanner를 초기화 시키니 문제가 해결 되었다.
try {
System.out.print("숫자를 입력해 주세요: ");
inputResultNum = scanner.nextInt();
} catch (Exception e) {
System.out.println("숫자만 입력 가능합니다.");
// 무한 루프 발생으로 인한 입력 초기화
scanner.next();
continue;
}
scanner.**() 를 통해 사용한 문자열을 모두 리턴하여 버퍼를 비움
'Camp > Java' 카테고리의 다른 글
| [TIL/JAVA] AtomicInteger (0) | 2024.10.24 |
|---|---|
| [JAVA] OOP (0) | 2024.10.09 |
| [JAVA] 조건문, 반복문, 배열 (0) | 2024.10.08 |
| [JAVA] 01 (0) | 2024.10.08 |