{
"llm" : {
"feedback" : "# Exercise: todo\n\n### Correctness\n- Du erfüllst die Vorgabe „in ToDoApp ein **Array** für Task-Objekte zu erstellen“ nicht, weil du stattdessen eine `ArrayList` verwendest.\n- In `listTasks(...)` fehlt die geforderte Ausgabe `\"(No tasks)\"`, wenn **keine** Tasks ausgegeben werden (entweder weil die Liste leer ist oder weil bei `list to do` alle bereits erledigt sind).\n- In `markTaskDone(int id)` fehlt die geforderte Fehlermeldung `\"Task with ID XX not found\"`, falls es zu der ID keinen Task gibt (z. B. zu große ID).\n- Die Import-/Package-Namen passen nicht zusammen: Du importierst `ch.fhnw.prog1.exercise.todo.task`, aber deine Klasse `task` liegt in `package ch.fhnw.prog1.exercise.todo;` (und Java-Konvention ist außerdem i. d. R. `Task` statt `task`). So wie es da steht, wird das nicht kompilieren.\n\n### Suggestion\n- Überlege dir, wie du mit einem festen `Task[]` arbeiten kannst: Du brauchst dann eine Strategie, um den „ersten freien Platz“ zu finden bzw. einen Zähler, wie viele Plätze schon belegt sind.\n- Für `\"(No tasks)\"`: Speichere dir beim Listen ab, ob mindestens ein Task tatsächlich ausgegeben wurde (nicht nur „existiert“), und gib die Meldung am Ende aus, falls keiner gedruckt wurde.\n- Für `\"Task with ID XX not found\"`: Prüfe vor dem Zugriff, ob die ID im gültigen Bereich liegt und ob an dieser Position überhaupt ein Task gespeichert ist.\n- Schau dir genau an, wie Java Klassen findet: `package ...;` und `import ...;` müssen exakt zusammenpassen (inkl. Groß-/Kleinschreibung und dem tatsächlichen Klassennamen).\n\n### Code Style\n- Klassen sollten in Java üblicherweise mit Großbuchstaben beginnen (`Task` statt `task`). Das macht auch Imports und Lesen des Codes deutlich klarer.\n- In `listTasks` kannst du direkt `IO.println(a);` schreiben statt `a.toString()` explizit aufzurufen (das ist idiomatischer).\n- `StringBuilder` in `toString()` ist hier nicht nötig, weil du nur wenige Teile zusammensetzt; das macht den Code unnötig komplex.\n- `ArrayList<task> taskList= new ArrayList<task>();` sollte innerhalb der `ToDoApp`-Klasse als Feld stehen (inkl. Imports). So wie es im Versuch steht, wirkt es „frei schwebend“ und ist in Java so nicht gültig.\n\n\n# Exercise: energymeter\n\n### Correctness\n- Im Konstruktor wird `level` nicht initialisiert (laut Aufgabenbeschreibung/Tests sollte der aktuelle Füllstand beim Erstellen des Meters definiert sein, typischerweise bei 0).\n\n### Suggestion\n- Überlege dir, welchen Startwert `level` direkt nach dem Konstruktor-Aufruf haben muss, damit `percentFull()` und die ersten `fill`/`consume`-Aufrufe in den Unit-Tests mit einem „frischen“ Meter korrekt funktionieren.\n\n### Code Style\n- Die `IllegalArgumentException(/* Fehlermeldung */)`-Platzhalter wirken wie TODOs; entweder eine sinnvolle Message angeben oder den Kommentar entfernen, damit der Code „fertig“ wirkt.\n- In `consume` prüfst du `intensity < 0 || duration < 0` in einer Zeile: das ist ok, aber falls ihr in der Übung Wert auf getrennte Argumentprüfungen legt (bessere Fehlersuche), könntest du die Checks getrennt formulieren.\n\n\n# Exercise: pong\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: stepstats\n\n### Correctness\n- Die Attributnamen entsprechen nicht der geforderten Verwendung: In der Aufgabenstellung werden `averageSteps`, `minSteps`, `maxSteps` gefordert, aber `successDays` soll laut Vorgabe ebenfalls als Attribut verfügbar sein (das passt), und im Beispiel wird `avgSteps` verwendet; entscheidend ist hier die Aufgabenbeschreibung: sie zeigt `double avgSteps = stats.averageSteps;` und später `stats.averageSteps` ist ok, aber sie zeigt auch `double avgSteps = stats.averageSteps; int min = stats.minSteps; int max = stats.maxSteps;` — das passt. Allerdings steht in b) explizit `double avgSteps = stats.averageSteps;` und `int successDays = stats.successDays;` – du erfüllst das. Was nicht passt: In b) steht außerdem „Die Berechnungen werden im Konstruktor durchgeführt und anschliessend kann man über die Attribute auf die Resultate zugreifen.“ Du hast zusätzlich `totalSteps` als öffentliches Result-Attribut, das nicht zu den geforderten Resultaten gehört (und kann als Teil der „Resultate“ missverstanden werden).\n\n### Suggestion\n- Überlege, welche Attribute wirklich Teil der „Resultate“ sein sollen, die von außen genutzt werden (gemäß Aufgabenbeschreibung), und welche Werte nur Hilfsgrößen für die Berechnung sind.\n\n### Code Style\n- `totalSteps` als `public` Feld ist ungünstig, weil es ein interner Zwischenwert ist; besser wäre, solche Hilfsvariablen nicht als öffentlich sichtbaren Zustand zu exposen.\n- In `StepTracker` fehlen im Attempt die üblichen Klassendeklaration/`public static void main(String[] args)` sowie die Imports für `Scanner` (und `IO` ist in deinem Snippet nicht ersichtlich). Falls das in eurer Vorlage anders geregelt ist, ok—sonst ist das schwer kompilierbar/inkonsistent zum restlichen Projekt.\n- Die Casts `(int) stats.minSteps` / `(int) stats.maxSteps` sind unnötig, weil `minSteps` und `maxSteps` bereits `int` sind.\n",
"status" : "SUCCESS"
}
}