Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs2006/Tag 3: Unterschied zwischen den Versionen

(erste version der Aufgabe)
(Übungsaufgabe)
Zeile 3: Zeile 3:
 
= Vormittags =
 
= Vormittags =
 
== Übungsaufgabe ==
 
== Übungsaufgabe ==
# Lese den Javadoc zu den Klassen die man benötigt um eine Datei einzulesen: [http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileInputStream.html FileInputStream] um mit den Konstruktoren eine Datei zu öffnen, [http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedReader.html BufferedReader] um eine Datei Zeilenweise [http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedReader.html#readLine() readLine()] zu lesen und [http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStreamReader.html 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 einließt 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.
+
# Lese den Javadoc zu den Klassen die man benötigt um eine Datei einzulesen: [http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileInputStream.html FileInputStream] um mit den Konstruktoren eine Datei zu öffnen, [http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedReader.html BufferedReader] um eine Datei zeilenweise [http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedReader.html#readLine() readLine()] zu lesen und [http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStreamReader.html 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 einließt 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 einließt. 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: [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#substring(int,%20int)) substring()], [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String) split()], [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#startsWith(java.lang.String) startsWith()]
+
# 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: [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#substring(int,%20int)) substring()], [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#split(java.lang.String) split()], [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#startsWith(java.lang.String) 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 [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#in 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.
 
# 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 [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#in 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.
  

Version vom 4. April 2006, 13:44 Uhr

<- Zurück zur Übersicht

Vormittags

Übungsaufgabe

  1. 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 einließt 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.
  2. 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()
  3. 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:

  1. 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.
  2. 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.
  3. 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.

Nachmittags

<- Zurück zur Übersicht