AutoFeedback API

Result 20dabf3d-24b2-4999-8320-4b8f0d3f953a

{
  "llm" : {
    "feedback" : "# Exercise: todo\n\n### Correctness\n- `markTaskDone(int id)` gibt keine Meldung `\"Task with ID XX not found\"` aus, wenn die ID ungültig ist oder an dieser Stelle kein Task gespeichert ist (gefordert im Kommentar).\n- `markTaskDone(int id)` kann bei ungültiger ID (z. B. zu groß/negativ) oder bei `null` im Array abstürzen, statt die geforderte Not-Found-Meldung zu drucken.\n\n### Suggestion\n- Überlege dir in `markTaskDone`, welche Fälle „kein Task mit dieser ID gespeichert“ abdecken: (a) ID außerhalb des gültigen Bereichs, (b) Slot existiert, aber enthält `null`. In genau diesen Fällen soll die Fehlermeldung ausgegeben werden und es darf nicht auf `.done` zugegriffen werden.\n- Nutze die Tatsache aus der Aufgabenbeschreibung: „Die ID entspricht dem Platz im Array“. Daraus folgt, dass du vor dem Markieren prüfen kannst, ob du diesen Platz überhaupt sicher lesen darfst und ob dort wirklich ein Task-Objekt liegt.\n\n### Code Style\n- In `Task.java` ist `import java.util.ArrayList;` unbenutzt.\n- In `ToDoApp.java` verwendest du `Arrays.copyOf(...)`, aber es ist kein Import für `java.util.Arrays` sichtbar.\n- Die Struktur wirkt ungewöhnlich: erst eine freie `main()`-Funktion und darunter eine `public class ToDoApp` in derselben Datei. Üblicherweise liegt `main` als `public static void main(String[] args)` in der Klasse (oder du hast zumindest eine klare, konsistente Klassen-/Dateistruktur entsprechend dem vorgegebenen Grundgerüst).\n- Felder in `Task` sind alle `public`; in der Regel kapselt man diese (z. B. `private`) und steuert Zugriff über Methoden, damit die Klasse besser kontrollierbar bleibt.\n\n\n# Exercise: energymeter\n\n### Correctness\n\n\n### Suggestion\n\n\n### Code Style\n- Du hast `capacity` und `level` als `public` deklariert; so kann externer Code den Zustand beliebig verändern. Üblicherweise kapselt man solche Attribute (z. B. nicht-öffentlich) und bietet Zugriff nur über Methoden.\n- Die Sichtbarkeiten sind uneinheitlich: Der Konstruktor ist `public`, die Methoden sind package-private (kein Modifier). Entscheide dich konsistent nach Vorgabe/Tests (wenn Tests aus einem anderen Package zugreifen, brauchen sie passende Sichtbarkeit).\n- Die initialen Feldwerte `= 0` sind redundant, weil `double` in Java standardmäßig mit `0.0` initialisiert wird.\n- In den `IllegalArgumentException`s sind eigene Fehlermeldungen ok, aber manche Unit-Tests prüfen ggf. nur den Exception-Typ (oder erwarten exakt keinen Text). Wenn Tests fehlschlagen, könnte das ein Ansatzpunkt sein.\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\n1. Correctness  \n- Du erfüllst die geforderte Verwendung nicht exakt: In der Aufgabenbeschreibung werden die Attribute als `averageSteps`, `minSteps`, `maxSteps` gezeigt, bei dir heisst der Durchschnitt `avgSteps`. Wenn die Tests/Autokorrektur genau diese Namen erwartet, schlägt es fehl.  \n- In der Aufgabenbeschreibung wird auch gezeigt, dass `successDays` direkt als Attribut gelesen wird; das passt, aber dein Code weicht bei den anderen Attributnamen von der vorgegebenen Schnittstelle ab.\n\n2. Suggestion  \n- Richte dich bei den Feldnamen strikt nach dem im Text vorgegebenen API-Beispiel (`averageSteps` statt `avgSteps`), auch wenn deine Berechnung inhaltlich korrekt ist.\n\n3. Code Style  \n- Viele Felder sind unnötig öffentlich bzw. unnötig als Objektzustand gespeichert (`totalSteps`, `days`, `goal`): Das bläht die Klasse auf und macht sie leichter falsch verwendbar. Besser nur die Resultate als Felder behalten und Hilfswerte lokal im Konstruktor berechnen.  \n- `public double avgSteps = totalSteps;` ist als Initialisierung missverständlich (und nutzt einen Wert, der sich später ändert). Initialisiere solche Felder lieber direkt sinnvoll (z. B. `0.0`) oder erst im Konstruktor.  \n- In `StepTracker` fehlen (wie auch in deiner Vorlage) Klassen-/Paket-Deklaration und Imports (z. B. für `Scanner`), falls das nicht in der Übungsumgebung automatisch bereitgestellt wird.\n",
    "status" : "SUCCESS"
  }
}