Javakurs2006/Tag 3
Vormittags
- Heute morgen sind die restlichen Aufgaben von Blatt 3 dran.
- Eine Kurzreferenz für Java ist seit gestern Online.
- Wir haben ein größeres Angebot an Beispiel-Aufgaben um bestimmte Themengebiete zu wiederholen
Übungsaufgabe
- Lese den Javadoc zu den Klassen, die man benötigt, um eine Datei einzulesen: FileInputStream um mit den Konstruktoren eine Datei zu öffnen, BufferedReader um eine Datei zeilenweise readLine() zu lesen und InputStreamReader um den FileInputStream und den BufferedReader kombinieren zu können. Verwende diese Klassen, um das IOUtility-Objekt um eine Methode ArrayList readLinesInFile(String filename) zu erweitern, die eine Datei in einzelnen Zeilen in eine ArrayList einliest und diese zurückgibt. Danach implementiere eine Methode String readFile(String filename)',' die eine eine ganze Datei als ein String zurückgibt. Hinweis: Verwende dabei die vorher implementierte Methode.
- Benutze diese Methoden, um einen neuen Konstruktor für die Studentendatenbank zu schreiben, der sie aus einer Datei einliest. Jede Zeile in der Datei sieht so aus: "234234 Heinz Kunz" Das bedeutet, erst die Matrikelnummer, dann ein Leerzeichen und dann der Name des Studenten bis zum Ende der Zeile. Vorsicht: beginnt eine Zeile nicht mit der Matrikelnummer sondern mit etwas anderem, ist sie zu verwerfen. Hilfreiche Methoden: substring(), split(), startsWith()
- Benutze dein Wissen um die Eingabe um eine Methode String promptUserForString(String question) zu schreiben, die den übergebenen String dem Benutzer auf der Konsole anzeigt und seine Antwort als String zurückgibt. Schreibe danach noch eine Methode int promptUserForInt(String question), die diese Methode verwendet, aber einen int zurückgibt. Hinweis: Man benötigt dafür System.in. Schreibe mit dieser Methode ein Menü für die Studentendatenbank, die es erlaubt, die Datenbank aus einer Datei einzulesen, und in einer anderen Datei zu sichern. Hinweis: Am einfachsten ist es ein Menü auszugeben, in dem jede Wahl eine Nummer hat, die der Benutzer dann eingibt. Wählt er eine ungültige Zahl, kann man einfach eine Fehlermeldung und das Menü ausgeben und eine neue Eingabe verlangen.
Advanced Aufgabe für Leute denen das Vorher alles zu Langweilig war:
- Erweitere das IOUtility-Objekt so, dass man es mit einem Dateinamen Instanziiert. Danach kann man mit den Methoden startReading() bzw. startWriting() die Klasse in einen Zustand bringen, der entweder Lesen oder Schreiben aus der Datei mit den Methoden readLine() bzw. writeLine() erlaubt. Die Methode readLine() soll dabei null zurückgeben, wenn die Datei zuende gelesen wurde.
- Erweitere das Menü der Studentendantenbank, so das es erlaubt:
- Eine Standarddatenbank zu erzeugen
- Einen Studenten zu suchen
- Einen neuen Studenten einzufügen
- Die Hauptdiplom-Note eines Studenten einzutragen.
- Erweitert euer Menü, so dasss es eine Fehlerbehandlung durchführt, wenn beim Einlesen einer Datei diese nicht vorhanden ist, oder beim Schreiben, die Datei nicht zum Schreiben geöffnet werden kann.