Heim > Java > javaLernprogramm > Warum verhält sich „nextLine()' nach „nextInt()' schlecht und wie kann es behoben werden?

Warum verhält sich „nextLine()' nach „nextInt()' schlecht und wie kann es behoben werden?

Barbara Streisand
Freigeben: 2024-12-14 13:30:11
Original
457 Leute haben es durchsucht

Why Does `nextLine()` Misbehave After `nextInt()` and How Can It Be Fixed?

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;
            }
        }
    }
}
Nach dem Login kopieren

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!

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