Inhaltsverzeichnis
Scanner.nextLine() und seine Auswirkung auf nachfolgende Eingaben verstehen
Heim Java javaLernprogramm Warum schlägt „scanner.nextLine()' nach „scanner.nextInt()' in Java fehl?

Warum schlägt „scanner.nextLine()' nach „scanner.nextInt()' in Java fehl?

Dec 25, 2024 am 01:36 AM

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

Scanner.nextLine() und seine Auswirkung auf nachfolgende Eingaben verstehen

Die in der Klasse java.util.Scanner definierte Methode nextLine() von Java wird häufig dazu verwendet Lesen Sie Textzeilen aus der Standardeingabe (der Tastatur des Benutzers). Allerdings kann seine Verwendung in bestimmten Szenarien zu unerwartetem Verhalten führen.

Betrachten Sie das folgende Beispiel, in dem nextLine() innerhalb einer Menüschleife verwendet wird:

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();
    }
    // ...
}
Nach dem Login kopieren

Wenn dieser Code ausgeführt wird, schlägt er fehl um den Benutzer zur Eingabe eines Satzes aufzufordern, wenn der Benutzer den Wert 1 eingibt. Stattdessen fährt der Code direkt mit der nächsten Eingabeaufforderung für einen Index fort.

Der Grund für dieses Verhalten liegt darin in der Natur von nextLine(). Bei Verwendung nach nextInt() liest und verbraucht es das verbleibende Zeilenumbruchzeichen (n) im Eingabestream. Wenn nextLine() aufgerufen wird, um den Satz zu lesen, stößt es folglich auf einen leeren Eingabepuffer und gibt eine leere Zeichenfolge zurück.

Um dieses Problem zu beheben, ist es notwendig, das Zeilenumbruchzeichen explizit mit scanner.nextLine( zu konsumieren ) nach jedem scanner.nextInt(). Dadurch wird sichergestellt, dass der Eingabepuffer geleert wird und nextLine() die Benutzereingaben für den Satz korrekt lesen kann.

Durch Befolgen dieser Richtlinie können Sie Inkonsistenzen bei der Verwendung von nextLine() vermeiden und sicherstellen, dass Ihr Code den Benutzer korrekt verarbeitet Eingabe sowohl in Single-Pass- als auch in Multi-Pass-Szenarien.

Das obige ist der detaillierte Inhalt vonWarum schlägt „scanner.nextLine()' nach „scanner.nextInt()' in Java fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)