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