Heim > Java > javaLernprogramm > Warum verhält sich „scanner.nextLine()' nach „scanner.nextInt()' in Java anders?

Warum verhält sich „scanner.nextLine()' nach „scanner.nextInt()' in Java anders?

Mary-Kate Olsen
Freigeben: 2024-12-27 07:21:09
Original
937 Leute haben es durchsucht

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

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();
Nach dem Login kopieren
// Not Working Example
while (true) {
    System.out.print("Enter a sentence: ");
    int selection = scanner.nextInt();
    String sentence = scanner.nextLine();
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage