>Java >java지도 시간 >Java에서 InputMismatchException을 처리할 때 무한 루프를 방지하는 방법은 무엇입니까?

Java에서 InputMismatchException을 처리할 때 무한 루프를 방지하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-24 00:38:14396검색

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.