[C:\chr\Java\pr1\04s05_Brutto_mehrmals\Aufgabe.oo

Werbung
Medieninformatik: PRÜ1a - Programmieren (Java) im SS 2004, Prof. Knabe, 2004-05-03
Aufgabe 5: Aufruf einer Dienstmethode ohne
Abgabetermin: 19. Mai 2004
Ausnahmebehandlung, Binden mehrerer Klassen, Verzweigung in Schleife.
Sie benötigen im Verzeichnis http://www.tfh-berlin.de/~knabe/java/lib/ oder
ftp://hrz.tfh-berlin.de/~knabe/homepage/public_html/java/lib/ die Dateien
Fio.java sowie demo/Sum.java.
Am besten kopieren Sie sich jedoch das komplette Verzeichnis lib mit seinem Unterverzeichnis demo.
Die Klasse lib.Fio enthält eine public-Methode Fio.naechsteZahl(). Diese kann, wie bei
ihr oder im Beispielprogramm Sum beschrieben, verschiedene Ausnahmen auslösen. Im Erfolgsfall liest
sie eine Zeile ein und liefert ihre Interpretation als int-Zahl >= 0.
Bsp.: final int nettoBetrag = lib.Fio.naechsteZahl();
a) Erweitern Sie damit die letzte Variante des Programms Brutto so, daß man beliebig viele
Bruttobeträge während eines Programmlaufs ausrechnen kann.
b) Alle von lib.Fio.naechsteZahl() auslösbaren Ausnahmen sollen Sie einmal testhalber
provozieren. Kopieren Sie das Protokoll im MS-DOS-Fenster, drucken Sie es und geben es mit dem
Programmtext ab.
Bsp.-Dialog (Eingaben kursiv):
D:\>java Brutto
Lieferdatum ? 19921231
Nettobetrag ? 100
100 DM netto => 114.00000000000001 DM brutto!
Lieferdatum ? 19930101
Nettobetrag ? 200
200 DM netto => 229.99999999999997 DM brutto!
Lieferdatum ? 19980331
Nettobetrag ? 300
300 DM netto => 345.0 DM brutto!
Lieferdatum ? 19980401
Nettobetrag ? 400
400 DM netto => 463.99999999999994 DM brutto!
Lieferdatum ? ^C
D:\>
Hinweise:
 Für nicht ganzzahlige Beträge nehmen Sie bequemerweise den Gleitpunkttyp double, da
Gleitpunktliterale wie 100.0 von diesem Typ sind. (float erfordert 100.0f).
An
den sehr krummen Bruttobeträgen sehen Sie, daß man mit den Gleitpunkttypen auch bei 17
Dezimalstellen Genauigkeit nicht kaufmännisch exakt rechnen kann. Es wäre ein Runden des
Ergebnisses jeweils noch auf 2 Nachpunktstellen erforderlich.
Zusatz für die Ehre: Lösen Sie die Aufgabenstellung profesionell, indem Sie
kaumännisch exakt mittels Klasse java.math.BigDecimal rechnen. Sie finden diese Klasse dokumentiert
im Labor unter der Java-Dokumentation oder im WWW unter
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html
Den im Prinzip endlosen Dialog brechen Sie ab durch Eingabe von <Ctrl/C>, dt. <Strg/C>.
 Der Einfachheit halber sollen Sie keine der von lib.Fio.naechsteZahl() auslösbaren
Ausnahmen individuell behandeln. Dazu müssen Sie in der Methodendeklaration von main für die
auslösbaren Ausnahmen throws Exception angeben.
 Das Verzeichnis lib muß über Ihren
CLASSPATH (siehe Beschreibung in
[C:\chr\Java\pr1\04s05_Brutto_mehrmals\Aufgabe.oo.rtf]
TextPad.oo.rtf der 3. Aufgabe) erreichbar sein, damit der Java-Compiler die Klasse lib.Fio fürs
Übersetzen und Ausführen findet.
Herunterladen