InputMismatchException이 포함된 try/catch 블록의 무한 루프: 솔루션
Try에서 InputMismatchException을 처리할 때 Java 프로그램에서 무한 루프가 발생합니다. /catch는 사용자로부터 정수 입력을 받는 동안 블록을 차단합니다. 이 동작은 InputMismatchException을 포착한 후 스캐너가 유효하지 않은 상태로 유지되어 루프가 무기한 반복된다는 사실에서 비롯됩니다.
이 문제를 해결하려면 catch 블록 내에서 다음 작업을 수행해야 합니다. :
catch (InputMismatchException e) { System.out.println("Error!"); input.next(); // Move to the next line to avoid the infinite loop }
input.next() 메서드는 스캐너 포인터를 다음 줄로 이동하여 오류를 발생시킨 잘못된 입력을 효과적으로 삭제합니다. 예외.
또는 정수 읽기를 시도하기 전에 hasNextInt() 메서드를 활용하여 읽고 있는 값이 실제로 정수인지 확인할 수 있습니다. 이 접근 방식을 사용하면 예외 처리가 전혀 필요하지 않습니다.
while (true) { if (input.hasNextInt()) { n1 = input.nextInt(); break; } else { input.next(); // Skip non-numeric input } }
Java 스캐너 문서에는 InputMismatchException이 발생한 후 스캐너가 예외를 담당하는 토큰을 전달하지 않으므로 이를 검색해야 한다고 명시되어 있습니다. 또는 다른 수단을 통해 우회합니다. 이러한 수정 사항을 구현하면 Java 프로그램의 무한 루프 문제가 완화됩니다.
위 내용은 Java에서 InputMismatchException을 처리할 때 무한 루프를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!