AutoFeedback API

Result acce372e-b303-4316-8a44-7c6e1390207d

{
  "llm" : {
    "feedback" : "# Exercise: parking\n\n### Correctness\n- `FlatRateCard.cost()` liefert immer 150 CHF, auch wenn die Karte gar nie geparkt hat; damit wird der Umsatz auch für unbenutzte Abos verrechnet (im Beispiel würde das den Gesamtumsatz verfälschen).\n- `GroupCard`: Für “mehr als 20” ist *nicht erlaubt*; du prüfst zwar `> 20`, lässt aber `0` Personen zu (laut Tabelle gibt es “bis 5”, also wirkt “0” eher nicht sinnvoll im Kontext).\n- `ParkingSystemExample`: Die Ausgabe soll laut Aufgabe “einen Gesamtumsatz von **156.75 CHF** anzeigen.” Mit deiner aktuellen `FlatRateCard`-Logik wird das (sehr wahrscheinlich) nicht dieser Wert.\n\n### Suggestion\n- Überlege bei der `FlatRateCard`, wann die Monatsgebühr tatsächlich in den Umsatz einfließen soll: bei jeder `calculateRevenueAndReset()`-Abrechnung immer, oder nur wenn die Karte im Zeitraum “aktiv genutzt” wurde? Du hast bereits `totalTime`—nutze den, um zu entscheiden, ob Kosten anfallen.\n- Bei `GroupCard`: Entscheide, welche Personenzahlen überhaupt gültig sein sollen (Minimum). Schau nochmal auf die Tabelle und formuliere daraus eine passende Validierungsbedingung im Konstruktor (Grenzwerte).\n- Rechne einmal per Hand den erwarteten Umsatz aus den Parkzeiten und den Tarifen (inkl. Abo-Regel), und vergleiche das mit dem, was dein Programm aktuell produziert. Das zeigt dir direkt, welche Kostenregel noch nicht zur Aufgaben-Expectation passt.\n\n### Code Style\n- In `FlatRateCard` ist `totalTime` aktuell nur für `park/reset` da, aber nicht für die Kostenberechnung; entweder konsequent nutzen (wenn du ihn brauchst) oder entfernen, damit die Klasse nicht “so tut als ob” sie zeitbasiert abrechnet.\n- In `GroupCard` heißt das Feld `person` (singular), gemeint ist aber eine Anzahl; ein Name wie `persons`/`numberOfPersons` wäre klarer.\n- `ParkingSystemExample`: In Java ist üblicherweise `public static void main(String[] args)` der Einstiegspunkt; dein `void main()` könnte je nach Umgebung/Test nicht als Startmethode erkannt werden.\n\n\n# Exercise: labyrinth\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: swissmap\n\n### Correctness\n- In `SwissMapApp` ist die `main`-Methode als `void main()` deklariert; als Einstiegspunkt wird typischerweise `public static void main(String[] args)` erwartet, sonst startet das Programm je nach Umgebung nicht.\n- Die Aufgabe verlangt explizit eine Klasse **`ModeButton`**; du hast stattdessen eine Klasse **`Button`** erstellt (Namensanforderung nicht erfüllt).\n- In `City`, `Lake`, `Mountain` (und auch `Button`) setzt du in `onMouseEnter`/`onMouseExit` den Hover-Zustand mit `isHovered = !isHovered;`. Dadurch kann der Zustand “falsch herum” enden (z.B. wenn Events doppelt/unerwartet kommen) und ist nicht garantiert korrekt “hovered vs. not hovered”.\n\n### Suggestion\n- Prüfe, wie deine IDE/der Autograder den Programmeinstieg findet: Schau nach, welche Signatur für `main` verlangt ist und passe sie so an, dass sie sicher als Entry Point erkannt wird.\n- Wenn die Aufgabenstellung eine bestimmte Klasse nennt (`ModeButton`), richte dich daran: Oft wird genau dieser Name beim Testen/Reviewing erwartet (Dateiname/Klasse/Verwendung).\n- Überlege bei Hover-Events: `onMouseEnter` bedeutet “Maus ist jetzt drin”, `onMouseExit` bedeutet “Maus ist jetzt draussen”. Setze den Zustand entsprechend deterministisch statt ihn zu toggeln.\n\n3. Code Style:\n- In `Button` ist `isHovered` zwar vorhanden, wird aber in `draw` nicht verwendet; entweder Hover visuell nutzen (z.B. andere Farbe) oder das Feld weglassen.\n- In `Lake` und `Mountain` lädst du Bilder zusätzlich per `ImageIO` in ein `BufferedImage`, zeichnest aber dann über `gui.drawImageCentered(...)` per String-Pfad; das `img` brauchst du nur für Breite/Höhe. Das ist unnötig doppelt und macht Ressourcen-Handling schwerer.\n- Mehrere Konstruktoren/Methoden sind package-private (z.B. `Button(SwissMap swissMap)`), obwohl du sie von außen gut brauchen könntest; überlege, ob `public` hier klarer ist (gerade in Übungsprojekten).\n- Tippfehler/Inkonsistenz: Variablenname `sateliteButton` vs. String `\"Satelite\"` (Schreibweise) – verbessert Lesbarkeit.\n\n\n# Exercise: visualizer\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n",
    "status" : "SUCCESS"
  }
}