Input und Output eines Programms
Du willst mehr über den Input und Output eines Programms erfahren? Hier erklären wir dir alles, was du zu diesem Thema wissen musst.
Inhaltsübersicht
Java I/O Stream – Was ist damit gemeint?
I/O – für was steht das eigentlich? I/O steht für Input und Output und ist für die Benutzer des Programms essentiell. Kurz gesagt, ohne den I/O würden die meisten Benutzer nur Bahnhof verstehen, wenn sie dein Programm verwenden.
I/O-Operationen sind dafür gedacht den Input, also das, was du in das Programm eingibst, in eine Sprache umzuwandeln, die der Computer versteht, um die Daten verarbeiten zu können. Dann geben sie, wenn nötig, eine Antwort also einen Output aus, der wieder in eine für uns verständliche Sprache umgewandelt werden muss.
Das Konvertieren von Sprache zu Sprache ist so aufwendig, dass es dafür vorprogrammierte Pakete gibt, die uns diese Arbeit ersparen. Damit können wir mittels einfacher Anweisungen Input vom Benutzer verlangen, der dann automatisch konvertiert wird.
Übrigens, das Konvertieren von Input- und Output-Daten für das Java-Programm nennt man auch den I/O-Stream.
Drei I/O-Streams: Java system.in, Java system.out und Java system.err
Jetzt wollen wir herausfinden, wie man überhaupt Input vom Benutzer des Programms verlangen kann. Wie schon vorhin gesagt, gibt es Pakete, die wir nun in unser Programm einbinden müssen. Nur so können wir deren Anweisungen benutzen.
Wichtig für den Input ist eine Anweisung, die Daten, die der Benutzer eingibt, ausliest. Dafür verwenden wir die Klasse „java.util.Scanner“. Sie ist Teil des Pakets „java.util“ und muss in das Programm eingebunden werden, um den Input verarbeiten zu können.
Dabei gibt es verschiedene Möglichkeiten den Input und Output –Strom zu verarbeiten, nämlich genau genommen drei Standard I/O-Streams: „System.in“, der Eingabestrom, „System.out“, der Ausgabestrom für die normalen Ergebnisse und „System.err“, der Ausgabe Strom für Fehlermeldungen.
Während „System.out“ und „System.err“ mit dem Bildschirm verbunden sind, ist „System.in“ mit der Tastatur verbunden und wartet auf Input.
Beispiel: Java Scanner Input
Schauen wir uns einfach mal ein Programm an, das als Output unseren Input ausgibt:
Die erste Zeile des Programms bindet die Klasse Scanner aus dem Paket „java.util“ ein und ist nötig, um ein Objekt der Scanner Klasse zu erstellen. Ausschlaggebend in diesem Programm ist der String namens „input“, der die Eingabe des Benutzers speichert, um diese später wieder ausgeben zu können.
Damit der Input überhaupt aufgefangen werden kann, muss ein neuer Scanner deklariert und erzeugt werden. Der Scanner heißt in diesem Beispiel einfach „scan“.
Nachdem wir einen Scanner erstellt haben, können wir die Methode „nextLine“ im Ausdruck der Zuweisungsanweisung für den Input-String aufrufen. Dadurch wird automatisch das Programm angehalten und es wird auf den Input des Benutzers gewartet. Durch das Benutzen der Enter-Taste bestätigt der Benutzer seine Eingabe und das Programm speichert die Information in dem Input-String.
Am Schluss geben wir die Zeichen, die wir eingegeben und die vom Programm gespeichert wurden, wieder mittels „System.out“ aus.
Beispiel mit int
Die Klasse Scanner besitzt auch andere Methoden, die nicht nur eine Zeile, die der User eingegeben hat, sondern zum Beispiel auch Zahlen auslesen kann. Denn bis jetzt wurde der Input nur als String behandelt. Um zum Beispiel ein Integer-Wert als Input zu verlangen, wird von der Klasse Scanner die „nextInt“ Methode vorgegeben. Mithilfe unseres jetzigen Wissens können wir die Methode auf eine Integer-Variable zuweisen, um somit einen Integer-Wert des Benutzers speichern zu können.
Der Benutzer darf dabei nur einen ganzzahligen Wert, der nur aus Ziffern besteht, eingeben. Ansonsten gibt das Programm eine Fehlermeldung aus und wird beendet.
Fehlermeldungen vermeiden
Es gibt verschiedene Arten, wie man den Benutzer davon abhalten kann diese Fehlermeldung auszulösen, da es für dich als Programmierer an erster Stelle steht, dass dein Programm läuft ohne abzustürzen.
Zum Beispiel könntest du die Zuweisungsanweisung, die den Wert mittels „nextInt“ in der Variablen „var“ speichert in eine if-Anweisung verpacken. So wird der Input nur zugewiesen, wenn es sich auch wirklich, um einen integer Wert handelt. Die if-Bedingung dazu wäre „hasNextInt“. Diese ist auch eine Methode aus der Klasse Scanner, die überprüft, ob es sich bei dem Input, um einen integer Wert handelt oder nicht. Wenn das nicht der Fall ist, teilen wir das dem Benutzer mittels „else“ mit.
Die Klasse Scanner besitzt noch weitere Methoden. Deshalb ist es interessant herauszufinden, was das für Methoden sind und wofür du sie gebrauchen kannst.
Du könntest zum Beispiel versuchen ein Programm für einen sehr einfachen Taschenrechner zu schreiben. Dieser soll zwei Integer-Werte als Input verlangen und sie dann addieren, um die Summe als Output wieder auf dem Bildschirm auszugeben.