{
"llm" : {
"feedback" : "# Exercise: todo\n\n### Correctness\n- `main` ist nicht als `public static void main(String[] args)` definiert; so wird das Programm in Java typischerweise nicht als Startpunkt erkannt.\n- In `main()` erstellst du ein **lokales** `Task[] tasks`, wodurch das **Feld** `tasks` der Klasse überschattet wird; dadurch arbeiten `addTask/listTasks/markTaskDone` nicht mit dem Array, das du in `main()` initialisiert hast.\n- `markTaskDone(int id)` greift direkt mit `tasks[id]` zu, ohne zu prüfen, ob `id` innerhalb der Array-Grenzen liegt; bei ungültigen IDs (z.B. zu gross) gibt’s einen Laufzeitfehler statt der geforderten Meldung.\n- `addTask(String description)` läuft mit `while (tasks[i] != null) i++;` ohne Begrenzung; wenn das Array voll ist, führt das zu einem Array-Index-Fehler statt sauberem Verhalten.\n- Die Ausgabe eines Tasks entspricht nicht dem gezeigten Format (es fehlt z.B. das Erledigt-Zeichen `✓` und die Einrückung/Formatierung wie im Beispiel).\n\n### Suggestion\n- Schau dir die erwartete Signatur für den Programmeinstieg an und passe deine `main`-Methode so an, dass die JVM sie findet.\n- Entferne in `main()` die lokale `tasks`-Variable oder sorge dafür, dass du wirklich das **Klassenfeld** initialisierst, das deine anderen Methoden verwenden.\n- Ergänze in `markTaskDone` zuerst eine Prüfung, ob `id` kleiner als 0 oder mindestens so gross wie die Array-Länge ist, bevor du `tasks[id]` verwendest.\n- Überlege dir in `addTask`, was passieren soll, wenn es keinen freien Platz mehr gibt, und stoppe die Suche rechtzeitig (z.B. indem du die Grenze des Arrays berücksichtigst).\n- Für die Ausgabe: Nutze den `done`-Status beim Drucken (z.B. unterschiedliche Darstellung für erledigt/nicht erledigt) und orientiere dich am Konsolenbeispiel, wie ein Task aussehen soll.\n\n### Code Style\n- In `listTasks` rufst du `tasks[i].toString()` explizit auf; `System.out.println(tasks[i])` reicht (und nutzt automatisch `toString()`).\n- Du mischst `IO.println/IO.print` und `System.out.println`; bleib konsistent bei einer Ausgabe-API.\n- Felder in `Task` sind package-private; üblicherweise macht man sie `private` und kapselt sie (gerade wenn andere Klassen darauf zugreifen sollen).\n\n\n# Exercise: energymeter\n\n### Correctness\n- Deine Methoden und der Konstruktor sind als `public` deklariert, während in der Aufgabenbeschreibung/Beispiellösung keine `public`-Modifier verwendet werden (package-private). Falls die Unit-Tests package-private Signaturen erwarten, schlagen sie dadurch fehl.\n\n### Suggestion\n- Schau dir an, wie die Tests die Klasse instanziieren und Methoden aufrufen (z. B. ob sie im gleichen Package liegen und ob sie `new EnergyMeter(...)` ohne `public` erwarten). Passe die Sichtbarkeit (Modifier) von Konstruktor/Methoden/Attributen entsprechend an.\n\n### Code Style\n- Du hast mehrere `else`-Blöcke direkt nach `throw`/`return`; das kann man vereinfachen, indem du nach dem Guard-Check einfach fortfährst (macht den Code flacher und besser lesbar).\n- `double level = 0;` ist okay, aber konsistenter wäre es, `level` im Konstruktor explizit zu setzen (auch wenn Java es standardmäßig auf 0 initialisiert).\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- In `StepTracker` gibst du bei `\"You made the goal ... times.\"` `stats.goal` aus, erwartet ist die Anzahl erfolgreicher Tage (also `successDays`), nicht das Ziel selbst.\n\n### Suggestion\n- Schau dir an, welche Variable in `StepStatistics` beim Durchlaufen der Schritte hochgezählt wird, wenn `step >= goal` gilt, und verwende genau diese beim Ausgeben der “... times.”-Zeile.\n\n### Code Style\n- Du speicherst `steps` und `goal` als öffentliche Felder in `StepStatistics`, obwohl sie nach der Berechnung nicht mehr gebraucht werden; das vergrößert die öffentliche API unnötig.\n- `totalSteps` ist als öffentliches Feld deklariert, wird aber außerhalb nicht verwendet; besser als lokale Variable im Konstruktor halten.\n- Sehr viele Felder sind `public`; üblich ist, Felder zu kapseln (z.B. `private`) und nur das Nötige nach außen sichtbar zu machen (oder zumindest nur die Resultat-Felder zu exponieren, wie in der Aufgabenbeschreibung angedeutet).\n",
"status" : "SUCCESS"
}
}