Bisher können wir nur Daten als Parameter beim Programmaufruf eingeben. Häufig soll jedoch ein Programm während seiner Laufzeit Daten vom Anwender einlesen. Dieses Einlesen ist in Java jedoch nicht so einfach wie in anderen Sprachen. Dies liegt nur daran, dass uns Java an dieser Stelle keinen zusätzlichen Komfort bietet. Wenn Sie aber erst einmal die Schritte beim Einlesen einer Benutzereingabe verstanden haben, können Sie später viel besser erfassen, was dabei eigentlich stattfinden muss ;-)

Die Schritte zum Einlesen einer Benutzereingabe:

  1. Bytepuffer zur Aufnahme der Tastendrücke bereitstellen
    Ein Byte ist ein Oktett aus Bits. Das sind 8 Bits (0 oder 1).
    Ein Puffer ist ein Bereich im Arbeitsspeicher, der Daten zwischenzeitlich (temporär) aufnimmt. Er puffert diese Daten zwecks weiterer Verarbeitung.

    Die geeignete Quelltextzeile lautet:

    byte[] Puffer = new byte[20];

    byte ist ein einfacher Datentyp zur Aufnahme eines Byte.
    byte[] bedeutet, dass darin mehrere Bytes unterzubringen sind.
    Mit new byte[20] wird im Arbeitsspeicher Platz für 20 Bytes reserviert. Darauf können wir unter dem Namen Puffer zugreifen. new ist in Java ein Schlüsselwort, so wie try und catch. new bedeutet, dass etwas neu angelegt wird - in diesem Fall ein Bytepuffer.
    Wenn Sie 50 Bytes im Puffer benötigen, ersetzen Sie 20 in den eckigen Klammern durch 50!
  2. Benutzereingaben per Methode System.in.read() in den Puffer einlesen
    System.in.read() erlaubt ausschließlich das Einlesen in einen Bytepuffer.
    Dieses Einlesen muss in einem try-Block mit anschließendem Auffangen einer möglichen Ausnahme erfolgen.
    Das Einlesen selbst erfolgt per:

    System.in.read(Puffer,0,20);

    Der erste Paremeter Puffer ist der zuvor angelegte Bytepuffer. Der zweite Parameter 0 ist der Abstand zum Pufferanfang. Hier sollen also die eingelesenen Tastendrücke ab dem Pufferanfang abgelegt werden. Der dritte Paremeter 20 gibt an, dass bis zu 20 Bytes eingelesen werden dürfen - und kein Stück mehr.

    Die komplette Anweisungssequenz lautet:

    try
    {
     System.in.read(Puffer,0,20);
    }
    catch(java.io.IOException e)
    { ... }
    Diejenige Ausnahme, die auf Grund des Einlesens auftreten kann, ist eine vom Typ java.io.IOException. Darin bedeutet IO bzw. io Input/Output (Eingabe/Ausgabe).

  3. Die im Bytepuffer vorliegenden Bytes in einen String konvertieren.
    Dies erfolgt beim Anlegen eines String in der Form

    String Variable = new String(Puffer);

Nach diesen drei Schritten liegt eine Benutzereingabe in einer Stringvariablen vor und wir können diese weiter verarbeiten.