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:
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.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.
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).
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.