nextLine() Comprehension
Java의 java.util.Scanner API에서 nextLine() 메소드는 개발자에게 문자열 입력을 구문 분석하는 기능을 제공합니다. 사용자로부터. 그러나 루프 내에서 사용하거나 nextInt()와 같은 다른 입력 구문 분석 메서드 후에 사용하면 다르게 동작할 수 있습니다.
시나리오 #1:
nextLine( ) 성공:
Scanner scanner = new Scanner(System.in); // Wait for user input before continuing String sentence = scanner.nextLine(); // Continue with more input int index = scanner.nextInt();
이 시나리오에서 nextLine()은 다음으로 이동하기 전에 사용자 입력을 기다립니다. nextInt().
시나리오 #2:
이제 예기치 않게 동작하는 코드 조각을 고려해 보세요.
Scanner scanner = new Scanner(System.in); // Infinite loop while (true) { // Menu options int selection = scanner.nextInt(); // Input only works after reading the number if (selection == 1) { String sentence = scanner.nextLine(); int index = scanner.nextInt(); } }
여기서 nextLine()은 그렇지 않습니다. nextInt() 이후에 사용자 입력을 기다리지 않습니다. 다음 줄로 건너뛰어 문장 입력이 불가능하게 됩니다.
설명:
이 예제의 차이점은 nextInt() 메서드에 있습니다. 숫자 입력을 읽지만 뒤에 오는 개행 문자(n)를 사용하지 않습니다. 결과적으로 nextInt() 다음에 nextLine()이 호출되면 이미 사용된 개행 문자를 읽으려고 시도하여 시나리오 #2에서 예상치 못한 동작이 발생합니다.
해결책:
이 문제를 해결하려면 각 nextInt() 뒤에 추가 nextLine() 호출을 삽입하여 다음으로 이동하기 전에 줄의 나머지 입력을 소비합니다. 입력요청. 이렇게 하면 nextLine()이 항상 사용자 입력을 기다립니다.
위 내용은 Java의 `nextLine()`이 `nextInt()` 이후에 예기치 않게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!