Java auf Eingabe warten

Siddharth Swami 12 Oktober 2023
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.

Verwandter Artikel - Java Input