Literatur

Ein-/Ausgabe und Streams

Die einfache Ausgabe haben Sie bereits in den ersten Schritten der Java-Programmierung kennengelernt. An dieser Stelle wollen wir jedoch näher darauf eingehen. Die einfache Ausgabe erfolgt standardmäßig in der Kommandozeile. Der Befehl für die einfache Ausgabe lautet:

System.out.print("Auszugebender Text");

In dem obigen Aufbau wird der Text "Auszugebender Text" ausgegeben. Die Methode print schreibt die Ausgabe immer an die aktuelle Ausgabestelle.

Die Methode println verwendet man, wenn man die Ausgabe mit einem Zeilenumbruch beenden möchte.

System.out.println("Auszugebender Text");

Die Ausgabe ist sehr nützlich bei der Fehlersuche, denn man kann sich mit System.out.println Werte von Variablen zur Laufzeit ausgeben lassen und so häufig schnell feststellen, wo es hakt.

Schauen wir uns in einem Beispiel an, wie man Variablen ausgibt.

// Beispiel für eine einfache Ausgabe
public class EinfacheAusgabe
{
    // main-Methode
    public static void main(String[] args)
    {
        // lokaler Variable einIntegerWert wird Zahl 5 zugewiesen
        int einIntegerWert = 5;
        // einfache Ausgabe mit der Variablen am Ende
        System.out.println("Die Variable einIntegerWert hat den Wert: "
            + einIntegerWert );
        // einfache Ausgabe mit der Variablen in der Mitte
        System.out.println("Der Wert "+einIntegerWert + 
            " wurde der Variablen einIntegerWert zugewiesen");
    }
}

Die Integer-Variable wird durch die Konkatenation (+) mit den anderen Teilstrings zu einem String verbunden und anschließend ausgegeben.

Über die Kommandozeile können in Java jedoch nicht nur Strings ausgegeben, sondern auch Eingaben entgegengenommen werden.

System.in.read(byte[] eingabe);

Die Methode read erwartet ein Array, in dem der eingegebene Wert gespeichert werden soll. Außerdem gibt sie die Anzahl der gelesenen bytes als Rückgabewert zurück.

Beispiel:

// Import wird für das Auffangen der IOException benötigt
import java.io.IOException;

public class EinfacheEingabe
{
    public static void main(String[] args)
    {
        /* lokale Variable, in der die 
            Eingabe gespeichert werden soll (256 Zeichen lang) */         
         byte eingabe[] = new byte[256];

        /* lokale Variable, anhand der überprüft werden soll, 
            wie viele bytes tatsächlich eingelesen wurden */         
        int anzahlBytesgelesen = -1;

        /* lokale Variable, die später den 
            eingegebenen Text enthalten soll */
         
        String eingelesenerText="";

        try
        {
            /* Einlesen von der Kommandozeile bis 
                die "Enter"-Taste gedrückt wurde */             
            anzahlBytesgelesen = System.in.read(eingabe);
        }
        // Auffangen einer potentiellen Exception
        catch (IOException ex)
        {
             // Ausgabe der Aufruferliste im Falle einer Exception
            ex.printStackTrace();
        }
        // Überprüfung, ob bytes eingelesen wurden
        if(anzahlBytesgelesen >0)
        {
             /* Umwandlung eines byte Arrays in einen 
                String mit Hilfe eines Konstruktors */             
             /* Konstruktor von String erwartet an erster Stelle das Array,
                an zweiter Stelle, an welcher Position der Text 
                innerhalb des Arrays beginnt, und an dritter Stelle 
                die Länge des eingegebenen Textes */
              eingelesenerText = new String(eingabe,0,anzahlBytesgelesen);
        }
        /* Hier geben wir die Anzahl der eingelesenen Bytes 
            und den eingelesenen Text aus. */       
        System.out.println("Es wurden "+ anzahlBytesgelesen
            +" Bytes gelesen!");
        System.out.println("Folgender Text wurde eingegeben: "
            + eingelesenerText);
 
    }
}

Das obige Beispiel für die einfache Eingabe ist ein wenig komplexer als das der einfachen Ausgabe. Dies liegt daran, dass wir eine zusätzliche Fehlerbehandlung und eine Typumwandlung durchführen müssen. Zuerst benötigen wir ein Array, in dem die eingegebenen Zeichen gespeichert werden sollen. Zusätzlich sollten wir eine Variable verwenden, die uns angibt, wie viele Zeichen tatsächlich eingegeben wurden. Eine weitere Variable speichert für uns den später umgewandelten Text. Bei dem Aufruf der read-Methode kann eine IOException auftreten, dadurch benötigen wir eine Fehlerbehandlung. Nachdem also einige Zeichen erfolgreich eingegeben wurden, wird in der nun folgenden if-Anweisung erstmal überprüft, ob mindestens ein Zeichen eingegeben wurde. Falls ja, wird das byte-Array in einen String umgewandelt. Anschließend erfolgen wieder zwei einfache Ausgaben zur Überprüfung, wie viele bytes eingegeben und was genau eingegeben wurde.

Dies waren die einfache Ein- und Ausgabe von bzw. auf die Kommandozeile. Im nun folgenden Kapitel behandeln wir die komplexeren Streams.