>Java >java지도 시간 >Java에서 `scanner.nextInt()` 이후 `scanner.nextLine()`이 실패하는 이유는 무엇입니까?

Java에서 `scanner.nextInt()` 이후 `scanner.nextLine()`이 실패하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-25 01:36:09829검색

Why Does `scanner.nextLine()` Fail After `scanner.nextInt()` in Java?

scanner.nextLine() 및 후속 입력에 미치는 영향 이해

java.util.Scanner 클래스에 정의된 Java의 nextLine() 메서드는 일반적으로 다음 작업에 사용됩니다. 표준 입력(사용자 키보드)에서 텍스트 줄을 읽습니다. 그러나 특정 시나리오에서 이 코드를 사용하면 예기치 않은 동작이 발생할 수 있습니다.

nextLine()이 메뉴 루프 내에서 사용되는 다음 예를 고려하세요.

Scanner scanner = new Scanner(System.in);

while (true) {
    // Display menu options
    // ...

    System.out.print("Please enter your selection: ");
    int selection = scanner.nextInt();

    if (selection == 1) {
        // This issue arises here when reading a sentence
        System.out.print("Enter a sentence: ");
        String sentence = scanner.nextLine();
    }
    // ...
}

이 코드가 실행되면 실패합니다. 사용자가 값 1을 입력하면 문장을 묻는 메시지를 표시합니다. 대신 코드는 인덱스에 대한 다음 입력 프롬프트로 바로 진행됩니다.

이유 이 동작은 nextLine()의 특성에 있습니다. nextInt() 다음에 사용되면 입력 스트림에 남아 있는 개행 문자(n)를 읽고 소비합니다. 결과적으로 문장을 읽기 위해 nextLine()을 호출하면 빈 입력 버퍼를 발견하고 빈 문자열을 반환합니다.

이 문제를 해결하려면 scanner.nextLine(을 사용하여 명시적으로 개행 문자를 사용해야 합니다. ) 각 scanner.nextInt() 다음에. 이렇게 하면 입력 버퍼가 지워지고 nextLine()이 문장에 대한 사용자 입력을 올바르게 읽을 수 있습니다.

이 지침을 따르면 nextLine()을 사용할 때 불일치를 방지하고 코드가 사용자를 정확하게 처리하도록 할 수 있습니다. 단일 및 다중 패스 시나리오 모두에서 입력합니다.

위 내용은 Java에서 `scanner.nextInt()` 이후 `scanner.nextLine()`이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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