A> |
Zur Lösung des Übungsblattes Nr. 4 (und vieler weiterer Übungsblätter) ist es notwendig, Daten von der Tastatur entgegenzunehmen bzw. aus einer Datei auszulesen.
Diese Operationen unterscheiden sich vom Auslesen der Kommandozeilenparameter! Kommandozeilenparameter werden beim Programmstart angegeben, Eingabeoperationen verlaufen interaktiv im Verlauf des Programmablaufes.
Da eine solche Operation nicht im Rahmen der Vorlesung behandelt wird, folgt ein Beispiel:
Das nachfolgende Java-Programm liest eine Integer-Zahl ein und gibt diese anschließend wieder aus:
import java.io.*; public class IOBeispiel { public static void main(String[] args) { System.out.println("IO-Beispiel\n"); String zeile= ""; int wert; BufferedReader in= new BufferedReader(new InputStreamReader(System.in) ); try { zeile= in.readLine(); } catch (IOException ioe) {} wert= Integer.parseInt(zeile); System.out.println("wert= " + wert); }; };
Wird das Programm gestartet, so wird der String "IO-Beispiel" auf dem Bildschirm ausgegeben. Anschließend wartet das Programm auf eine Eingabe des Benutzers, der nun kann eine Zahl eingegeben kann (Abschluß der Eingabe mit der Return-Taste). Die Eingabe wird zunächst in der String-Variablen zeile abgelegt und anschließend mit Hilfe von Integer.parseInt(zeile) wieder ausgegeben. Falls die Eingabe kein Integerwerten ist, wird das Programm mit einem Fehler (Exception) abgebrochen.
Beispielaufruf (unterstrichener Text spiegelt Tastatureingaben wieder):
> java IOBeispiel IO-Beispiel 1234 wert= 1234
Zum Lösen der Übungsaufgabe ist es nicht notwendig, genau zu verstehen, was sich hinter einem BufferedReader-Objekt verbirgt! Das Beispiel sollte jedoch vergleichsweise leicht zum Lösen der Übungsaufgaben angepaßt werden können.
public String readLine() throws IOException
Die Eingabe von Daten aus einer Datei erfolgt in ähnlicher Weise wie die Eingabe von der Tastatur. Auch hier ist das genaue Verständnis der vorgestellten Klassen nicht notwendig.
import java.io.*; import java.util.StringTokenizer; public class IOBeispiel { public static void main(String[] args) { String zeile= ""; int wert; FileReader fr= null; BufferedReader in= null; try { fr= new FileReader(args[0]); in= new BufferedReader(fr); } catch(FileNotFoundException fnfe) {} for (int i= 0; i < 8; i++) { try { zeile= in.readLine(); } catch (IOException ioe) {} StringTokenizer st= new StringTokenizer(zeile); for (int j= 0; j < 8; j++) { String s= st.nextToken(); wert= Integer.parseInt(s); System.out.print(wert + "\t"); } System.out.println(""); } }; };
Beispielaufruf (unterstrichener Text spiegelt Tastatureingaben wieder):
> java IOBeispiel test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64