Erstellen Sie zur Erfassung von Schulnoten inklusiver anschließender Darstellung eines Notenspiegels ein simples Programm. Sowohl Ein- als auch Ausgabe soll über die Konsole erfolgen. Dazu sind die Klassen App und GradesOverview gegeben. Es befindet sich auch bereits eine main Methode in der Klasse App, mit der Sie das Programm starten können.
- Bitte nehmen Sie keine Änderungen in der Klasse
Appvor. - Für die Klasse
GradesOverviewexistieren Unit-Tests in der KlasseGradesOverviewTest. Jeder Testfall muss am Ende Ihrer Implementierung erfolgreich durchlaufen. Zu jeder Aufgabe ist der dazugehörige Testfall am Ende der Aufgabenbeschreibung angegeben.
- Machen Sie sich mit dem aktuellen Stand des Programms vertraut und starten Sie es über Ihre Entwicklungsumgebung. Lesen Sie die Anweisungen auf der Konsole und erfassen Sie ein paar Schulnoten. Beenden Sie anschließend die Erfassung über die Eingabe von
exit. Das könnte auf Ihrer Konsole bspw. wie folgt aussehen:
Please enter the grades line by line. Press [ENTER] after each grade.
Enter 'exit' to finish and get an evaluation.
2
3
5
4
3
g
Invalid input. Only integers and 'exit' is allowed.
exit
The overview is currently not available ;(-
Ein Array ist ein Datentyp, der zur Speicherung mehrerer Werte eines Typs verwendet wird. Bei der Initialisierung eines Arrays muss immer eine Größe angegeben werden. Die Größe definiert wie viele Elemente einem Array hinzugefügt werden können. Werden dem Array mehr Elemente hinzugefügt, als es Platz hat, kommt es zu einem Fehler bei Ausführung des Programms. Schauen Sie in der Klasse
GradesOverviewwo das Arraygradesinitialisiert wird. Setzen Sie die initiale Größe auf 10, sodass 10 Noten ohne Fehler erfasst werden können. (TestfallGradesOverviewTest.testInitialSizeOfGrades()) -
Die Klasse
GradesOverviewist eine Art Notenspeicher mit Funktionen zur Durchschnittsberechnung und Darstellung eines Notenspiegels. Alle vom Nutzer über die Konsole eingegebenen Noten sollen im Arraygradesder KlasseGradesOverviewgespeichert werden. Damit dies möglich ist, müssen Sie die Methodepublic void add(int grade)implementieren. Der Parametergrademuss dem Arraygradeshinzugefügt werden. Bitte beachten Sie, dass die Methodeaddzur Laufzeit des Programms mehrfach aufgerufen wird, und zwar immer dann, wenn der Nutze eine Note auf der Konsole eingibt. Die Note, die zuerst eingegeben wurde, muss sich daher auf dem ersten Index im Array befinden und die Note, die als zweites eingegeben wurde, muss sich auf dem zweiten Index im Array befinden usw. (TestfallGradesOverviewTest.testInputSequence()) -
Fügen Sie der Methode
addeine Validierung hinzu. Gültige Noten sind 1, 2, 3, 4 und 5. Bei allen anderen Werten soll eineIllegalArgumentExceptiongeworfen werden. (TestfallGradesOverviewTest.testInvalidValues()) -
Das
gradesArray hat eine feste Größe von 10, d. h. es können nicht mehr als 10 Noten erfasst werden. Finden Sie eine Lösung, um eine beliebige Anzahl von Noten zu erfassen. Verändern Sie dazu nicht die initiale Größe des Arrays. (TestfallGradesOverviewTest.testMoreThan10Grades()) -
Für alle eingegeben Noten soll der Durchschnitt berechnet werden. Implementieren Sie dazu die Methode
calcAveragein der KlasseGradesOverview. Geben Sie den berechneten Durchschnitt auf 2 Nachkommastellen gerundet alsdoublezurück. Sind keine Noten vorhanden, dann soll0.0als Durchschnitt zurückgegeben werden. Bei einem Array der Größe 10 sind alle Felder per Default mit 0 initialisiert. Bei der Durchschnittsberechnung sollen nur echte Noten berücksichtigt werden. (TestfallGradesOverviewTest.testCalcAverage()) -
Der eigentliche Notenspiegel ist eine Übersicht über alle eingegeben Noten, deren Verteilung sowie eine Darstellung der Gesamtanzahl an eingegebenen Noten inkl. Durchschnitt. Implementieren Sie diese Übersicht in der Methode
toString. Es soll ein String in der folgenden Form zurückgegeben werden:
You have entered the following grades: [1, 1, 1, 1, 5, 4, 3, 4, 5]
Grade '1': 4
Grade '2': 0
Grade '3': 1
Grade '4': 2
Grade '5': 2
The total number of grades are 9
The average is 2.78
(Testfall GradesOverviewTest.testToString())
- Führen Sie nun das Programm noch einmal wie in Aufgabe 1 beschrieben aus und testen Sie!