Hier mal noch eine Kleinigkeit zu Aufgabe 2.12:
Die Datei:
Buch1;10
Buch2;20
Buch3;30
Buch4;15
Buch5;40
Buch6;40
Buch7;5
Buch8;0
Buch9;12
Buch10;30
Der Code wie er im Struktogram steht, man beachte das titelMax2 nicht initialisiert wurde, sondern deklariert. (In Java geschrieben, einfach ignorieren das der FileReader nicht geschlossen wurde und andere Unfeinheiten...)
public static void main(String[] args) throws IOException {
int anzMax = 0;
int anzMax2 = 0;
String titelMax = "";
String titelMax2 = null;
FileReader buchAusleihsummen = new FileReader("BuchAusleihsummen");
List<String> ds = IOUtils.readLines(buchAusleihsummen);
for (String datensatz : ds) {
int dsAnzahl = Integer.parseInt(datensatz.split(";")[1]);
String dsTitel = datensatz.split(";")[0];
if(dsAnzahl > anzMax) {
anzMax2 = anzMax;
anzMax = dsAnzahl;
titelMax2 = titelMax;
titelMax = dsTitel;
} else {
//
}
}
System.out.println("Top Ausleihe 1. Platz: " + titelMax + " wurde " + anzMax + " mal ausgeliehen.");
System.out.println("Top Ausleihe 2. Platz: " + titelMax2 + " wurde " + anzMax2 + " mal ausgeliehen.");
}
Gibt folgendes aus:
Top Ausleihe 1. Platz: Buch5 wurde 40 mal ausgeliehen.
Top Ausleihe 2. Platz: Buch3 wurde 30 mal ausgeliehen.
Ändert man
(dsAnzahl > anzMax)
in
(dsAnzahl >= anzMax)
erhält man folgende Antwort:
Top Ausleihe 1. Platz: Buch6 wurde 40 mal ausgeliehen.
Top Ausleihe 2. Platz: Buch5 wurde 40 mal ausgeliehen.
Folglich ist Lösung 5 richtig, 2, 3 und 4 können von Anfang an ausgeschlossen werden,
Lösung 1 bemerkt nur das es nicht initialisiert wurde, es steht nichts über die Deklaration bei der Aufgabe dran.