Articles

3 Wege zum Lesen von Benutzereingaben aus der Konsole in Java

Details Geschrieben von Nam Ha Minh Zuletzt aktualisiert am 27. Juli 2019&nbsp | &nbsp Drucken E-Mail

In diesem Artikel, besprechen wir drei verschiedene Möglichkeiten, Eingaben des Benutzers in der Kommandozeilenumgebung (auch „Konsole“ genannt) zu lesen. Jeder Weg ist relativ einfach zu bedienen und hat auch seine eigenen Vor- und Nachteile.

Lesen von Benutzereingaben mit der Klasse BufferedReader

Indem wir die System.in (Standard-Eingabestrom) in einen InputStreamReader wickeln, der wiederum in einen BufferedReader gewickelt ist, können wir Eingaben des Benutzers in der Kommandozeile lesen. Hier ist ein Beispiel:

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);

Im obigen Beispiel liest die Methode readLine() eine Textzeile aus der Befehlszeile.Vorteile: Die Eingabe wird für ein effizientes Lesen gepuffert.Nachteile: Der Wrapping-Code ist schwer zu merken.

Benutzereingaben mit der Scanner-Klasse lesen

Die Scanner-Klasse (verfügbar seit Java 1.5) dient in erster Linie dazu, primitive Typen und Strings mit regulären Ausdrücken zu parsen, kann aber auch zum Lesen von Benutzereingaben in der Kommandozeile verwendet werden. Hier ein Beispiel:

Scanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.print("Enter your age: ");int age = scanner.nextInt();

Vorteile:

  • Komfortable Methoden zum Parsen von Primitiven (nextInt(), nextFloat(), …) aus der tokenisierten Eingabe.
  • Reguläre Ausdrücke können verwendet werden, um Token zu finden.

Nachteile:

  • Die Lesemethoden sind nicht synchronisiert.

Mehr erfahren: Java-Scanner-Tutorial und Code-Beispiele

Benutzereingaben mit der Console-Klasse lesen

Die Console-Klasse wurde in Java 1.6 eingeführt und hat sich zu einer bevorzugten Methode entwickelt, um Benutzereingaben von der Kommandozeile zu lesen. Darüber hinaus kann sie zum Lesen von passwortähnlichen Eingaben verwendet werden, ohne dass die vom Benutzer eingegebenen Zeichen als Echo ausgegeben werden; es kann auch die Syntax für Format-Strings verwendet werden (wie System.out.printf()). Hier ein Beispiel-Codeausschnitt:

Console console = System.console();if (console == null) {System.out.println("No console: non-interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();String passport = console.readLine("Enter your %d (th) passport number: ", 2);

Vorteile:

  • Lesen des Passworts ohne Echo der eingegebenen Zeichen.
  • Lesemethoden sind synchronisiert.
  • Format-String-Syntax kann verwendet werden.

Nachteile:

  • Funktioniert nicht in nicht-interaktiver Umgebung (z. B. in einer IDE).

Mehr erfahren: Java-Konsolen-Eingabe-Ausgabe-Beispiele

Java-Beispielprogramm zum Lesen von Benutzereingaben

Zu Ihrer Bequemlichkeit und als Referenz kombinieren wir den obigen Codeschnipsel zu einem Demoprogramm, dessen Quellcode wie folgt aussieht:

package net.codejava.io;import java.io.*;import java.util.*;public class UserInputConsoleDemo {public static void main(String args) {// using InputStreamReadertry {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String name = reader.readLine();System.out.println("Your name is: " + name);} catch (IOException ioe) {ioe.printStackTrace();}// using ScannerScanner scanner = new Scanner(System.in);System.out.print("Enter your nationality: ");String nationality = scanner.nextLine();System.out.println("Your nationality is: " + nationality);// using ConsoleConsole console = System.console();if (console == null) {System.out.println("No console: not in interactive mode!");System.exit(0);}System.out.print("Enter your username: ");String username = console.readLine();System.out.print("Enter your password: ");char password = console.readPassword();System.out.println("Thank you!");System.out.println("Your username is: " + username);System.out.println("Your password is: " + String.valueOf(password));// using Console with formatted promptString job = console.readLine("Enter your job: ");String passport = console.readLine("Enter your %d (th) passport number: ", 2);System.out.println("Your job is: " + job);System.out.println("Your passport number is: " + passport);}}

Sehen Sie sich das Video an:

  • Konsole Klasse Javadoc
  • I/O von der Kommandozeile – Die Java-Tutorials
  • Scanner Klasse Javadoc
  • BufferedReader Klasse Javadoc

Verwandte Tutorials:

  • Java-Konsolen-Eingabe-Ausgabe-Beispiele
  • Java-Scanner-Tutorial und Code-Beispiele

Weitere Java File IO Tutorials:

  • Wie man Textdateien in Java liest und schreibt
  • Wie man Binärdateien in Java liest und schreibt
  • Java IO – Beispiele für allgemeine Datei- und Verzeichnisoperationen
  • Grundlegendes Beispiel zur Java-Serialisierung
  • Verstehen der Java-Externalisierung mit Beispielen
  • Wie man Dateien im ZIP-Format in Java komprimiert
  • Wie man ZIP-Dateien in Java extrahiert

Über den Autor:

Nam Ha Minh ist zertifizierter Java-Programmierer (SCJP und SCWCD). Er hat in der Zeit von Java 1.4 mit dem Programmieren begonnen und ist seitdem in Java verliebt. Schließen Sie Freundschaft mit ihm auf Facebook und schauen Sie sich seine Java-Videos auf YouTube an.

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.