04 Java – Ein- und Ausgaben
Beim Programmieren sind Ausgaben sehr essenziell. Zum einen können bestimmte Werte auf der Konsole zur Überprüfung ausgegeben werden. Zum anderen können über die Ausgabe auf der Konsole Errors identifiziert werden, was wesentlich für die Fehlersuche und –behebung ist.
Eingaben wiederum ermöglichen uns die Interaktion mit Programmen und damit den Zugriff auf den weiteren Programmablauf – auch über die Konsole. Nahezu alles, was über elektronische Geräte getan wird, wird mit Eingaben realisiert – das Tippen auf der Tastatur, das Klicken mit der Maus oder sogar das Drücken von Tasten auf einem Controller so wie viele weitere Dinge.
Demnach sind natürlich nicht nur Ein- und Ausgaben über die Konsole möglich. Dafür werden jedoch Benutzeroberflächen benötigt. In Kapitel 2 – Datentypen gab es bereits einen kleinen Einblick zu den Konsolenausgaben.
Ausgaben
Um Ausgaben über die Konsole zu realisieren, gibt es mehrere Möglichkeiten.
Die print
-Ausdrücke werden Methoden genannt. An diese können Werte übergeben werden. Diese Methoden sorgen dann dafür, dass die Werte auf der Konsole ausgegeben werden. Die printf()
-Methode wird im nachfolgenden Kapitel 5 – Zeichenketten genauer betrachtet.
Eingaben
Es gibt mehrere Varianten Eingaben zu realisieren. Zwei davon werden hier vorgestellt. Dafür muss jedoch auf bestimmte Klassen und Objekte zurückgegriffen werden, die erst importiert werden müssen.
Klassen und Objekte werden in Kapitel 10 – Klassen und Kapitel 11 – Objekte genauer behandelt. Mehr zu Imports folgt in Kapitel 16 – Pakete & Imports.
BufferedReader
Eine mögliche Variante funktioniert über den BufferedReader
in Verbindung mit dem InputStreamReader
und einem InputStream
-Objekt System.in
.
Um nun über diesen Reader eine Eingabe von der Konsole einlesen zu können, muss folgendes geschrieben werden.
Um nun über diesen Reader eine Eingabe von der Konsole einlesen zu können, wird die readLine()
-Methode verwendet.
Die readLine()
-Methode liest einen String von der Konsole ein. Dieser kann nun in einer Variablen gespeichert und ausgegeben werden.
Der BufferedReader
stellt selbst keine Methoden zur Verfügung, um Werte als primitive Datentypen einzulesen. Daher muss auf die Methoden der jeweiligen Wrapper-Klassen zurückgegriffen werden.
Jedoch besitzt der Reader eine Methode read()
. Die Eingabe liegt jedoch als int
vor, daher muss diese noch in ein char
gecastet werden.
Scanner
Eine weitere Variante wird über die Scanner
-Klasse umgesetzt.
Der Scanner
stellt zwar selbst Methoden für die Eingabe von primitiven Datentypen zur Verfügung, jedoch besitzt er keine Methode für die Eingabe oder die Umwandlung in ein char
.
Wenn ein char
gefordert wird, muss die Eingabe erst mit der next()
- oder der nextLine()
-Methode erfolgen, welche als Input einen String erhält.
Im Anschluss wird dann über die charAt()
-Methode das erste Zeichen des Strings in ein char
umgewandelt. charAt(0)
bezieht sich auf den ersten Index eines Strings. Damit wird das erste Zeichen des Strings
abgegriffen. Alle folgenden Zeichen werden ignoriert. Mehr zu Indizes folgt in Kapitel 8 – Arrays.
Mit
next()
wird alles bis zum ersten Leerzeichen eingelesen.Mit
nextLine()
wird der kompletteString
eingelesen inklusive Leerzeichen.
Um Ressourcen zu schonen, sollten der Scanner
und/oder BufferedReader
nach ihrer Verwendung wieder geschlossen werden.
Farbliche Gestaltung (Ausblick)
Wir Menschen lieben es, uns durch schicke, benutzerfreundliche Oberflächen zu klicken. Kein Wunder, sie machen das Leben einfacher und sorgen dafür, dass wir uns nicht im digitalen Dschungel verirren. Doch wenn du dich in die Programmierung stürzt, wirst du irgendwann auf einen unverzichtbaren Begleiter treffen: die Konsole.
Viele sehen die Konsole als das graue, langweilige Arbeitszimmer der Programmierung – keine Fenster, keine Bilder, nur Text, Text, Text. Aber lass dich nicht täuschen! Die Konsole ist wie ein treuer Trainingspartner im Fitnessstudio der Programmierung: unaufgeregt, direkt und genau das, was du brauchst, um die Grundlagen zu meistern. Klar, sie ist nicht so bunt und aufregend wie die Benutzeroberflächen, die du vielleicht gewohnt bist, aber genau das ist ihre Stärke!
Doch keine Sorge, du musst nicht ganz auf Farben verzichten! Mit ein paar ANSI-Zeichencodes kann man der Konsole durchaus etwas Farbe und Leben einhauchen. So wird aus einem grauen, langweiligen Arbeitszimmer plötzlich eine farbenfrohe Wohlfühloase (mehr oder weniger). Wer also genug vom Standard-Look hat und sich nach etwas Abwechslung sehnt, könnte in dieser kleinen Designfreiheit den nötigen Ansporn finden, sich näher mit der Konsole anzufreunden.
Im nächsten Kapitel – Kapitel 5 – Zeichenketten – werde ich dir zeigen, wie du die Konsole mit ANSI Escape Codes aufpeppen kannst. Denn Programmieren muss ja nicht immer nur schwarz-weiß sein, oder?
Übung
Da wir jetzt alle nötigen Bausteine zusammen haben, um ein einfaches Programm mit Ein- und Ausgaben schreiben zu können, folgt nun eine kleine Übung.