"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 InputMismatchException을 처리할 때 무한 루프를 방지하는 방법은 무엇입니까?

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

2024년 12월 23일에 게시됨
검색:464

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 프로그램의 무한 루프 문제가 완화됩니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3