Java auf Eingabe warten
Benutzereingaben können sich auf beliebige Informationen oder Daten beziehen, die ein Benutzer vom Compiler verarbeiten lassen möchte. Wir können auf Situationen stoßen, in denen wir möchten, dass unser Programm die Kompilierung anhält und darauf wartet, dass der Benutzer einen Wert eingibt.
Für solche Situationen können wir die Funktion nextLine()
verwenden.
In diesem Tutorial lernen wir, wie man Java mit der Methode nextLine()
dazu bringt, auf Benutzereingaben zu warten.
Die Funktion nextLine()
befindet sich in der Java-Klasse java.util.Scanner
. Diese Funktion wird verwendet, um über die aktuelle Zeile hinauszugehen und einige Eingaben zurückzugeben.
Mit dieser Methode wartet der Compiler also darauf, dass der Benutzer eine gültige Zeichenkette eingibt und die Kompilierung des Programms fortsetzt. Diese Methode gilt nur für den String-Datentyp.
Beispielsweise,
// Java program to illustrate the
// nextLine() method of Scanner class in Java
import java.util.Scanner;
public class Scanner_Class {
public static void main(String[] args) {
// create a new scanner
// with the specified String Object
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
// print the next line
System.out.println("The line entered by the user: " + s);
scanner.close();
}
}
Eingang:
Hello World.
Ausgabe:
The line entered by the user: Hello World.
Sie müssen nicht warten, um die Verfügbarkeit von Eingaben zu überprüfen, da Scanner.nextLine()
automatisch blockiert, bis eine Zeile verfügbar ist.
Der folgende Code erklärt dies.
import java.util.Scanner;
public class Scanner_Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
while (true) {
System.out.println("Please input a line");
long then = System.currentTimeMillis();
String line = scanner.nextLine();
long now = System.currentTimeMillis();
System.out.printf("Waited %.3fs for user input%n", (now - then) / 1000d);
System.out.printf("User input was: %s%n", line);
}
} catch (IllegalStateException | NoSuchElementException e) {
// System.in has been closed
System.out.println("System.in was closed; exiting");
}
}
}
Ausgabe:
Please input a line
Hello World.
Waited 1.892s for user input
User input was: Hello World.
Please input a line
^D
System.in was closed; exiting
Im obigen Beispiel haben wir mit der Funktion currentTimeMillis()
die Wartezeit des Compilers auf die Eingabe berechnet und angezeigt.
Diese Funktion kann zwei Ausnahmen zurückgeben. Die IllegalStateException
wird ausgelöst, wenn der Scanner geschlossen wird, und die NoSuchElementException
wird ausgelöst, wenn keine Zeile gefunden wird.