Heim >Java >javaLernprogramm >Warum verhält sich „scanner.nextLine()' nach „scanner.nextInt()' in Java anders?
Scanner.nextLine() für Benutzereingaben verwenden
Frage:
Warum funktioniert das Die Methode scanner.nextLine() verhält sich in den folgenden beiden Java-Codes unterschiedlich Beispiele?
// Working Example Scanner scanner = new Scanner(System.in); System.out.print("Enter a sentence: "); String sentence = scanner.nextLine();
// Not Working Example while (true) { System.out.print("Enter a sentence: "); int selection = scanner.nextInt(); String sentence = scanner.nextLine(); }
Antwort:
Der Unterschied im Verhalten ergibt sich daraus, wie scanner.nextInt() im Vergleich zu scanner.nextLine() Eingaben verbraucht.
Im Arbeitsbeispiel liest scanner.nextLine() eine ganze Eingabezeile, einschließlich Leerzeichen, bis es auf eine neue Zeile trifft Charakter. Im Gegensatz dazu liest scanner.nextInt() nur den ganzzahligen Teil der Eingabe und belässt alle verbleibenden Zeichen im Eingabepuffer.
Wenn der nextInt()-Aufruf ohne nachfolgende Aufrufe von nextLine() verwendet wird, werden alle Zeichen verwendet Im Eingabepuffer verbleibende Zeichen (z. B. ein Zeilenumbruchzeichen) werden nicht verbraucht, was zu Problemen bei nachfolgenden nextLine()-Aufrufen führen kann.
Im nicht funktionierenden Beispiel, nachdem der Benutzer a eingegeben hat Zahl, das verbleibende Zeilenumbruchzeichen wird von nextInt() nicht verbraucht. Folglich liest der nachfolgende Aufruf von nextLine() sofort das Zeilenumbruchzeichen, was dazu führt, dass dem Satz eine leere Zeichenfolge zugewiesen wird.
Um dieses Problem zu beheben, kann nach jedem ein zusätzlicher Aufruf von scanner.nextLine() platziert werden nextInt()-Aufruf, um alle verbleibenden Zeichen im Eingabepuffer zu verbrauchen.
Das obige ist der detaillierte Inhalt vonWarum verhält sich „scanner.nextLine()' nach „scanner.nextInt()' in Java anders?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!