Wie kann man auf der Kommandozeile Text eingeben?

Mit Hilfe eines InputStreamReader kann Text von der Kommandozeile gelesen werden. Noch einfacher geht dies seit Java 5.0 mit der Klasse Scanner.

Dem InputStreamReader wird als Parameter die Eingabequelle - in diesem Fall der Eingabestrom von der Tastatur - übergeben. Das Objekt selber wird zur Pufferung an einen BufferedReader gesandt. Mit Hilfe dessen Methode readLine() wird die Eingabe gelesen.
Zur Kontrolle wird die Eingabe auf der Kommandozeile ausgegeben.

import java.io.*;

public class TextEingebenClass {
    public static void main(String[] args) {
        System.out.println("Bitte Text eingeben und mit Return abschliessen:" + System.getProperty("line.separator"));
        try {
            BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
            String s = ein.readLine();
            System.out.println("Du hast eingegeben:" + System.getProperty("line.separator") + s);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}

Das Beispiel verwendet zweimal die Methode System.getProperty() mit dem Parameter line.separator. Auf diese Weise lassen sich plattformübergreifende Zeilenumbrüche realisieren. Ein Überblick über alle möglichen Parameter verschafft die Methode System.getProperties() in der Java Dokumentation.

v.6.0Ab JavaSE 6.0 stellt die Klasse System die statische Methode console() bereit, die ein Objekt der aktuellen Konsole liefert. Hier sind einige Vereinfachungen eingeführt worden. So besitzt die Klasse Console eine Methode readLine() , die einen einzeiligen String von der Konsole liest und zurück gibt. Der folgende Quelltext demonstriert dies:

import java.io.Console;

public class Konsole {
    public static void main(String[] args) throws ClassNotFoundException {
        Console console = System.console();
        if (console == null) {
          System.err.println("Keine Konsole erreichbar!");
          return;
        }

        String s = console.readLine("Geben Sie Ihren Namen ein!");
        System.out.println("Hallo " + s);
    }
}

v.5.0Ab Java v.5.0 kann auch mit Hilfe der Klasse Scanner von der Kommandozeile gelesen werden. Hierzu muss dem Konstruktor ein InputStream übergeben werden. Näheres hierzu im Artikel zur Klasse Scanner .