Korrektur des nextLine()-Verhaltens
Das bei der Verwendung von nextLine() im zweiten Codebeispiel aufgetretene Problem ist auf die Kombination von nextInt() zurückzuführen und nextLine().
Das Problem mit nextInt()
nextLine() verbraucht die gesamte Zeile, einschließlich Leerzeichen und Zeichen, die vor dem Drücken der Eingabetaste eingegeben wurden. nextInt() verbraucht jedoch nur den numerischen Wert. Wenn der Zahl nicht numerische Zeichen oder Leerzeichen folgen, versucht nextLine(), sie zu lesen, was zu unerwartetem Verhalten führt.
Lösung: Verbleibende neue Zeile verbrauchen
Um sicherzustellen Damit nextLine() die gesamte Zeile wie vorgesehen liest, können Sie nach jedem nextInt() einen nextLine()-Aufruf hinzufügen, um alle verbleibenden Zeichen in der Zeile zu verbrauchen. Dadurch wird sichergestellt, dass beim Lesen des Satzes mit nextLine() eine vollständige Zeile erhalten wird.
Beispiel mit Korrekturen:
// Example #2 (Corrected) import java.util.Scanner; class Test { public void menu() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("\nMenu Options\n"); System.out.println("(1) - do this"); System.out.println("(2) - quit"); System.out.print("Please enter your selection:\t"); int selection = scanner.nextInt(); scanner.nextLine(); // Consume remaining newline if (selection == 1) { System.out.print("Enter a sentence:\t"); String sentence = scanner.nextLine(); System.out.print("Enter an index:\t"); int index = scanner.nextInt(); System.out.println("\nYour sentence:\t" + sentence); System.out.println("Your index:\t" + index); } else if (selection == 2) { break; } } } }
Das obige ist der detaillierte Inhalt vonWarum verhält sich „nextLine()' nach „nextInt()' schlecht und wie kann es behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!