Aufgabe2.jar
ist in Ihrem Arbeitsverzeichnis prog1-uebungen\
neben dieser Aufgabenstellung Aufgabe2.html
noch ein Paketverzeichnis aufgabe2\
mit folgende Dateien hinzugekommen:
aufgabe2\package-info.java | Paketdokumentation |
aufgabe2\Histogramm.java | zu vervollständigendes Java-Programm |
aufgabe2\Wuerfel.java | fertiges Java-Programm für den Testschritt |
Öffnen Sie ein Terminal im Arbeitsverzeichnis prog1-uebungen\ und
erweitern Sie Ihre HTML-Dokumentation um das Paket aufgabe2 mit dem Kommando
ant doc
Öffnen Sie die erzeugte Paketdokumentation doc/aufgabe2/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.
Als Voraussetzung für das Bearbeiten dieser Aufgabe sollten Sie die Vorlesungsunterlagen bis
mindestens Seite 2-26 nachbereitet und die zugehörigen Programmbeispiele nachvollzogen haben,
insbesondere
Klausur.java,
KlausurArray.java,
Bubblesort.java,
ArrayVar.java.
aufgabe2\Histogramm.java ist noch unvollständig.
Sie sollen den fehlenden Programmtext an den mit TODO: markierten Stellen ergänzen:
Sie sollen für jede der Zahlen 1 bis 6 zählen, wie oft sie eingegeben wurden.
Dafür brauchen Sie sechs Zähler. Realisieren Sie diese sechs Zähler als Elemente eines
int-Arrays der Länge 6.
Verwenden Sie hier innerhalb der while-Schleife eine if-else-Anweisung für
die Unterscheidung, ob die eingegebene Zahl innerhalb oder außerhalb des Bereichs von 1 bis 6 liegt.
Greifen Sie bei Zahlen zwischen 1 und 6 mit dem Index-Operator auf den richtigen Zähler zu.
Für Zahlen außerhalb des Bereichs, müssen Sie eine Fehlermeldung ausgeben, wie sie im Beispeil
in der Paketdokumentation
doc/aufgabe2/package-summary.html
gezeigte ist.
Geben Sie hier die Zeilen des Histogramms in einer for-Schleife über das Zählerfeld
(das int-Array) aus.
Innerhalb dieser for-Schleife geben Sie den Histogrammbalken in einer weiteren
for-Schleife über den jeweiligen Zählerstand aus.
Wie die Ausgabe genau aussehen soll, können Sie wieder dem Beispiel in der Paketdokumentation
doc/aufgabe2/package-summary.html
entnehmen. Beispiele für for-Schleifen finden Sie auf den Folien 2-24 und 2-26
der Vorlesung.
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.
javac aufgabe2\Histogramm.java java aufgabe2.HistogrammLiefert Ihr Programm exakt die verlangten Ausgaben?
Wuerfel.java.
javac aufgabe2\Wuerfel.java java aufgabe2.Wuerfel 100 | java aufgabe2.HistogrammDie Ausgabe von
aufgabe2.Wuerfel (100 Zufallszahlen) wird hier über eine
sogenannte "Pipe" (geschrieben als senkrechter Strich) als Eingabe an aufgabe2.Histogramm
weitergegeben.ant -Dpackage=aufgabe2 style
ant -Dpackage=aufgabe2 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 einen Test mit automatischer Eingabe vor.
Zeigen Sie das ausgefüllte Teilnahmeprotokoll.
Wenn Sie beim automatischen Test vom Wuerfel sehr viele Zahlen ausgeben lassen (z.B. 1000 statt 100), wird das Histogramm sehr unansehnlich, weil die Balken über mehrere Zeilen gehen. Dies lässt sich durch Skalieren und/oder Zuschneiden verhindern oder durch eine andere Ausrichtung.
Ändern Sie für die Bonusaufgaben nicht Ihr Pflichtprogramm, sondern legen Sie die Bonusprogramme
in einem neuen Unterordner aufgabe2\bonus\ ab. In den Bonusprogrammen müssen Sie dann
die Paketzuordnung package aufgabe2.bonus; angeben.
Beim ant-Aufruf geben Sie entsprechend -Dpackage=aufgabe2/bonus an.
n aus dem größten vorkommenden Zählerstand
max mit der Formel n = max / 50 + 1.n als Schrittweite in der inneren for-Schleife,
die die Histogrammbalken ausgibt.Beispiel:
| 1111111111 (10) | 11 (10) | |
| 2222222222222 (13) | 22222 (13) | |
| 333333333333 (12) | ►► zuschneiden ►► | 3333 (12) |
| 444444444 (9) | 4 (9) | |
| 5555555555555555555 (18) | 5555555555 (18) | |
| 66666666666 (11) | 666 (11) | |
Verwenden Sie den kleinsten vorkommenden Zählerstand minus 1 als Startwert der
inneren for-Schleife, die die Histogrammbalken ausgibt.
Ganze Zahlen zwischen 1 und 6 eingeben (Ende mit Strg-D/Strg-Z):
1 1 2 2 2 3 3 3 3 4 4 5 5 5 6 7
Falsche Eingabe wird ignoriert: 7
3 5 5 5 5 5 5 5 5 6
Histogramm:
1 2 3 4 5 6 (1)
1 2 3 4 5 6 (2)
2 3 5 (3)
3 5 (4)
3 5 (5)
5 (6)
5 (7)
5 (8)
5 (9)
5 (10)
5 (11)