Drücken Sie die Eingabetaste, um in Java fortzufahren

Rupam Yadav 12 Oktober 2023
Drücken Sie die Eingabetaste, um in Java fortzufahren

Dieser Artikel zeigt Ihnen, wie wir die Konsole in die Warteschleife setzen, bis der Benutzer die Eingabetaste drückt, dann wird die nächste Nachricht angezeigt. Im folgenden Beispiel nehmen wir mit der Klasse Scanner drei Eingaben und zeigen sie dann auf der Konsole an.

Verwenden einer zusätzlichen nextLine() zum Warten auf die Eingabetaste in Java

Im Beispiel erstellen wir ein Objekt der Klasse Scanner, sc. Scanner scannt den Text und analysiert primitive Typen wie int und String. Diese Klasse enthält viele Methoden, die in Eingabeoperationen verwendet werden. Die am häufigsten verwendeten Methoden sind nextInt() , nextLine, nextDouble usw.

Im folgenden Beispiel sehen wir, wo das Problem liegt, und verwenden eine Technik, um es beim nächsten zu lösen.

Hier nehmen wir drei Eingaben: den Typ int und die nächsten beiden sind vom Typ String. Wir verwenden die Klasse Scanner, um zuerst die Methode nextInt() aufzurufen, um die Eingabe für das Alter in eine Variable vom Typ int zu bekommen; Um dann den Vor- und Nachnamen einzugeben, verwenden wir zwei sc.nextLine()-Methoden und zwei Variablen, um sie zu speichern. Zuletzt zeigen wir alle Werte der Variablen in der Ausgabe.

Das Problem besteht darin, dass der Benutzer den Wert für age eingibt und die Eingabetaste drückt. Die Konsole soll die Eingabe für firstName bekommen, überspringt sie aber und geht direkt nach lastName. Die folgende Ausgabe zeigt das Problem deutlich.

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

Ausgabe:

Enter your age: 23
Enter your First Name: Enter your last Name: John
Your Info:
Age: 23
Full Name:  John

Process finished with exit code 0

Jetzt, da wir das Problem kennen, können wir die Lösung besprechen und warum das Problem überhaupt auftritt. Wenn wir einen int-Wert als Eingabe nehmen, liest die Methode nextInt() den int-Wert und kann den Zeilenumbruch nicht lesen. Wenn wir nach dem Lesen von int die Eingabetaste drücken, sieht die Konsole dies daher als Zeilenumbruch und überspringt es zur folgenden Anweisung.

Wir müssen eine zusätzliche Methode nextLine() nach der Funktion nextInt() verwenden, die den Zeilenumbruch überspringt und die nächste Zeile anzeigt, um dieses Problem zu lösen. In der Ausgabe sehen wir, dass wir jetzt den Vornamen eingeben müssen, was im vorherigen Beispiel nicht möglich war.

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();
    sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

Ausgabe:

Enter your age: 5
Enter your First Name: gfd
Enter your last Name: gfgf
Your Info:
Age: 5
Full Name:  gfgf
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Verwandter Artikel - Java Scanner