Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:java:aoc:aco2023:day2:start [02.12.2023 18:09] – [Bearbeiten - Pane] Frank Schiebel | faecher:informatik:oberstufe:java:aoc:aco2023:day2:start [12.11.2024 06:32] (aktuell) – Frank Schiebel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ~~NOTOC~~ | ||
+ | |||
====== Tag 2 ====== | ====== Tag 2 ====== | ||
+ | ===== Aufgabe ===== | ||
+ | |||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * Beispiel d2e.txt | ||
+ | * Input d2i.txt. | ||
+ | |||
+ | |||
+ | ++++ Kontrollergebnisse | | ||
+ | * Eingabedatei d2e.txt: | ||
+ | * Teil 1 - '' | ||
+ | * Teil 2 - '''' | ||
+ | * Eingabedatei d6i.txt: | ||
+ | * Teil 1 - '' | ||
+ | * Teil 2 - '' | ||
+ | ++++ | ||
+ | |||
< | < | ||
Zeile 6: | Zeile 25: | ||
<pane id=" | <pane id=" | ||
- | ==== Hilfestellungen | + | ==== Hilfestellungen |
* Du kannst/ | * Du kannst/ | ||
* Die split(" | * Die split(" | ||
Zeile 69: | Zeile 88: | ||
==== Hilfestellungen Teil 2 ==== | ==== Hilfestellungen Teil 2 ==== | ||
- | * Das meiste der verschachtelten Schleifen kannst du stehen lassen. Du benötigst nun nicht mehr die boolean-Variable, | + | * Das meiste der verschachtelten Schleifen kannst du stehen lassen. Du benötigst nun nicht mehr die boolean-Variable, |
* Erstelle pro Zeile drei int-Variablen, | * Erstelle pro Zeile drei int-Variablen, | ||
* Am Ende jeder Zeile fügst du das Produkt der drei Variablen zur Gesamtsumme hinzu. | * Am Ende jeder Zeile fügst du das Produkt der drei Variablen zur Gesamtsumme hinzu. | ||
Zeile 118: | Zeile 137: | ||
{{ : | {{ : | ||
- | Anmerkung: Das ist natürlich Overkill, - vor allem für die Züge eine eigen Klasse zu implementieren, | + | Anmerkung: Das ist natürlich Overkill - vor allem für die Züge eine eigene |
- | Nun verlagert sich die Arbeit vor allem auf das Einlesen der Rätseldaten - wenn man das hat, kann man so ziemlich alle Infos sehr einfach in kurzer Zeit wieder rausholen: | + | * Jede Klasse definiert einen neuen Datentyp, hier erhalten wir '' |
+ | * Die Klasse '' | ||
+ | * Die Klasse '' | ||
+ | |||
+ | Nun verlagert sich die Arbeit vor allem auf das Einlesen der Rätseldaten | ||
+ | |||
+ | '' | ||
+ | |||
+ | * Splitte die Eingabezeile am Doppelpunkt, | ||
+ | * Der zweite Teil ist ein String mit allen Zügen zu diesem Spiel. | ||
+ | |||
+ | ++++ Tipp: Erster Split & Erzeugung des Spiel-Objekts | | ||
+ | |||
+ | <code java> | ||
+ | // Spielnummer | ||
+ | String gameString = line.split(":" | ||
+ | int spielNummer = Integer.parseInt(gameString.split(" | ||
+ | // Neues Spiel instanziieren | ||
+ | Spiel s = new Spiel(spielNummer); | ||
+ | |||
+ | // String mit allen Zügen | ||
+ | String drawString = line.split(":" | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | * Die einzelnen Züge erhält man durch den Split des Strings mit allen Zügen am Semikolon, die einzelnen Farben dann, indem man die Substrings an den Kommata splittet: | ||
+ | |||
+ | ++++ Tipp: Gerüst mit Schleifen zu den Zugdetails | | ||
+ | |||
+ | <code java> | ||
+ | // Einzelne Züge holen. | ||
+ | String[] draws = drawString.split(";" | ||
+ | for(String d: draws) { | ||
+ | // Die einzelnen Farben abarbeiten | ||
+ | int nRed = 0; | ||
+ | int nBlue = 0; | ||
+ | int nGreen = 0; | ||
+ | String[] colors = d.split("," | ||
+ | for(String c: colors) { | ||
+ | if(c.indexOf(" | ||
+ | if(c.indexOf(" | ||
+ | if(c.indexOf(" | ||
+ | } | ||
+ | s.fuegeZugHinzu(nRed, | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | * Wenn das Spiel dann komplett, muss es noch in die ArrayList eingefügt werden: '' | ||
+ | |||
+ | |||
+ | === Die Lösungen für Teil 1 und 2 sehen in dieser Variante so aus: === | ||
+ | |||
+ | Jetzt kann man direkt über die Spiele iterieren und alle Infos nach belieben auswerten. | ||
- | Die Lösungen für Teil 1 und 2 sehen in dieser Variante so aus: | ||
Zeile 148: | Zeile 221: | ||
} | } | ||
</ | </ | ||
+ | Code zu dieser Variante: https:// | ||
+ | |||
</ | </ | ||
+ | |||
+ | |||
</ | </ |