Buch erstellen
Diese Seite zum Buch hinzufügen
Diese Seite zum Buch hinzufügen
Buch erstellen
Diese Seite aus Buch entfernen
Diese Seite aus Buch entfernen
Dies ist eine alte Version des Dokuments!
Day 2: Red-Nosed Reports
Teil 1
Auch Tag 2 ist relativ einfach. Du benötigst keine besonderen Java-Befehle außer der split()
-Methode aus Tag 1.
- Speichere jede Zeile in einem int-Array oder in einer ArrayList<Integer>
- Ich empfehle, 3 separate Methoden zu erstellen, die für ein übergebenes Java-Array jeweils prüfen, ob:
- … alle Zahlen nur aufsteigend sind
- … alle Zahlen nur absteigend sind
- … die Differenz aller aufeinander folgenden Zahlen in Ordnung ist
- Prüfe dann pro Zeile, ob die Zahlen entweder aufsteigend oder absteigend sind und ob die Differenz okay ist.
public boolean istAufsteigend(int[] levels) { for (int i = 1; i < levels.length; i++) { if (levels[i] <= levels[i-1]) {// Gleichheit ist ein Ausschlusskriterium! return false; } } return true; } public boolean istAbsteigend(int[] levels) { for (int i = 1; i < levels.length; i++) { if (levels[i] >= levels[i-1]) {// Gleichheit ist ein Ausschlusskriterium! return false; } } return true; } public boolean distanzOkay(int[] levels) { for (int i = 1; i < levels.length; i++) { if (Math.abs(levels[i-1] - levels[i]) < 1 || Math.abs(levels[i-1] - levels[i]) > 3) { return false; } } return true; } public void partOne() { int safeReports = 0; for (String line: inputLines) { // teile an den Leerzeichen auf String[] strLevels = line.split(" "); // deklariere & initialisiere ein int-Array int[] levels = new int[strLevels.length]; // "übersetze" die einzelnen Strings in Integer for (int i = 0; i < strLevels.length; i++) { levels[i] = Integer.parseInt(strLevels[i]); } //prüfe Auf-/Absteigend und Distanz if ((istAufsteigend(levels) || istAbsteigend(levels)) && distanzOkay(levels)) { safeReports++; } } System.out.println(safeReports); }