Aufgabe3.jar
sind in Ihrem Arbeitsverzeichnis prog1-uebungen\
neben dieser Aufgabenstellung Aufgabe3.html
noch sechs .txt-Dateien für das automatische Testen und
ein Paketverzeichnis aufgabe3\ hinzugekommen:
aufgabe3-*.txt | Dateien mit Testeingaben und Sollausgaben |
aufgabe3\package-info.java | Paketdokumentation |
aufgabe3\Notenstatistik.java | zu vervollständigendes Java-Programm |
Öffnen Sie ein Terminal im Arbeitsverzeichnis prog1-uebungen\ und
erweitern Sie Ihre HTML-Dokumentation um das Paket aufgabe3 mit dem Kommando
ant doc
Öffnen Sie die erzeugte Paketdokumentation doc/aufgabe3/package-summary.html im Browser. Die Paketdokumentation enthält die Spezifikation des zu erstellenden Programms.
Außerdem sollte immer die Webseite der Lehrveranstaltung https://www-home.htwg-konstanz.de/~drachen/prog1/prog1.html im Browser geöffnet sein. Dort finden Sie die erwähnten Beispielprogramme und die benötigten Vorlesungsfolien.
Nutzen Sie auch die Dokumentation der Java-Bibliothek https://docs.oracle.com/en/java/javase/21/docs/api/java.base/module-summary.html zum Nachschlagen.
Als Voraussetzung für das Bearbeiten dieser Aufgabe sollten Sie die Vorlesungsunterlagen bis
mindestens Seite 3-20 nachbereitet und die zugehörigen Programmbeispiele nachvollzogen haben,
insbesondere
Verzweigung.java,
Fallunterscheidung.java
aufgabe3\Notenstatistik.java ist noch unvollständig.
Sie sollen den fehlenden Programmtext an den mit TODO: markierten Stellen ergänzen:
Verwenden Sie sowohl if-else- als auch switch-case-Anweisungen.
Letzteres bietet sich vor allem für die Vorkommaziffern an. Bauen Sie die Fallunterscheidungen so auf,
dass Sie möglichst wenige Wiederholungen immer gleicher Anweisungen haben.
Auf die Zeichen der eingelesenen Note können Sie mit
note.charAt(int index) zugreifen.
Ob ein Zeichen eine Ziffer ist, können Sie mit
Character.isDigit(char ch) prüfen.
printf für Gleitkommazahlen die Formatangabe %.1f,
um die Darstellung mit einer Nachkommastelle zu erreichen.Ersetzen Sie nach getaner Arbeit die TODO:-Markierungen in den Zeilenkommentaren durch DONE:. Sie dürfen die TODO:-Zeilenkommentare nicht löschen. Die Kommentare sollen als Gliederung des Programms erhalten bleiben.
Ihre Lösung darf nur Java-Sprachmittel und Java-Bibliotheksklassen enthalten, die bereits in der Vorlesung besprochen wurden oder die in dieser Aufgabenstellung explizit vorgeschlagen sind.
Haben Sie sowohl if-else- als auch switch-case-Anweisungen verwendet?
Haben alle Variablen den kleinst möglichen Scope?
javac aufgabe3\Notenstatistik.java java aufgabe3.NotenstatistikLiefert Ihr Programm exakt die verlangten Ausgaben?
java aufgabe3.Notenstatistik < aufgabe3-in1.txt > out1.txt java aufgabe3.Notenstatistik < aufgabe3-in2.txt > out2.txt java aufgabe3.Notenstatistik < aufgabe3-in3.txt > out3.txt
Ihr Programm liest dank des Operators < aus der angegebenen Datei statt von Tastatur
und schreibt dank des Operators > in die angegebene Datei statt auf das Terminal.
Achtung, in der Windows powershell gibt es die beiden Operatoren nicht.
Verwenden Sie cmd (Eingabeaaufforderung) oder die Git Bash statt der powershell.
diff -w aufgabe3-out1.txt out1.txt diff -w aufgabe3-out2.txt out2.txt diff -w aufgabe3-out3.txt out3.txt
Das Linux-Kommando diff vergleicht den Inhalt zweier Dateien und
gibt die Unterschiede aus. Ziel ist, dass die Kommandos nichts ausgeben,
also keine Unterschiede zwischen Soll-Ausgabe und Ihrer Ausgabe finden.
Die Ausgabe von Unterschieden ist etwas kryptisch. Verwenden Sie deshalb das compare-Plugin
in notepad++ oder die compare-Funktionalität in VSCode für die genaue Analyse der Unterschiede.
ant -Dpackage=aufgabe3 style
ant -Dpackage=aufgabe3 clean bugsspotbugs schreibt seine Meldungen nicht auf den Bildschirm, sondern in eine Datei
bugs.html, die Sie mit einem Webbrowser anschauen müssen.Sie sind erst fertig, wenn das Programm funktioniert und die Werkzeuge checkstyle und spotbugs keine Fehler mehr melden!
Führen Sie einen Test mit manueller Eingabe vor, insbesondere mit falschen Eingaben.
Führen Sie die Tests mit automatischer Eingabe aus Schritt 3 vor.
Zeigen Sie das ausgefüllte Teilnahmeprotokoll.
Ändern Sie für die Bonusaufgaben nicht Ihr Pflichtprogramm, sondern legen Sie die Bonusprogramme
in einem neuen Unterordner aufgabe3\bonus\ ab. In den Bonusprogrammen müssen Sie dann
die Paketzuordnung package aufgabe3.bonus; angeben.
Beim ant-Aufruf geben Sie entsprechend -Dpackage=aufgabe3/bonus an.
try-Block, werfen Sie darin
falsche Eingaben mit throw new java.util.InputMismatchException(...)
und fangen Sie die Ausnahmen in einem catch-Block.
Geben Sie innerhalb des catch-Blocks die Fehlermeldung aus und
springen Sie von dort mit continue zum nächsten Schleifendurchlauf.1, 1-, 2+, 2, 2-, 3+, 3, 3-, 4+, 4, 51 als 1,0 gewertet werden,
eine 1- als 1,3 und
eine 2+ als 1,7 usw.