AutoFeedback API

Result 5fcfdd83-dbc2-4326-9f2d-7b3d40f6e93f

{
  "llm" : {
    "feedback" : "# Exercise: textanalysis\n\nLlm Evaluation ist für diese Aufgabe deaktiviert. Entferne die .llmignore Datei vom Package der Aufgabe.\n\n\n# Exercise: lotto\n\n### Correctness\n- In `Lottery.buyTicket` erhöhst du `soldTickets` nie; dadurch bleibt `getSoldTickets()` immer 0 und jede Ticket-ID wird effektiv immer `soldTickets + 1` (also wiederholt 1), statt 1,2,3,…\n- In `Lottery.draw` fehlt die Zustandsprüfung: Nach der Ziehung darf `draw()` nicht noch einmal aufgerufen werden, sondern muss dann eine `IllegalStateException` werfen.\n\n### Suggestion\n- Schau in `buyTicket` nach dem Punkt, an dem ein Ticket erfolgreich verkauft wurde: genau dort musst du den internen Zähler so aktualisieren, dass die nächste ID korrekt weiterläuft (und `getSoldTickets()` stimmt).\n- Nutze in `draw()` den bestehenden Zustand (`winningNumbers == null` bzw. `hasDrawn()`), um vor dem Ziehen zu prüfen, ob bereits gezogen wurde, und reagiere dann mit der geforderten Exception.\n\n### Code Style\n- `Lottery`: Der Import `Arrays` wird nur für `numbersValid` verwendet; dort könntest du auch ohne Stream arbeiten (ist aber ok). Achte aber darauf, dass `Arrays.stream(numbers).toList()` eine relativ moderne Variante ist; je nach Java-Version im Kurs kann das Probleme machen.\n- `Ticket`: `Set<Integer> numbers;` sollte `private final` sein, damit klar ist, dass die Ticket-Zahlen nach Konstruktion nicht mehr ersetzt werden (und zur Kapselung passen).\n- `Ticket.getCorrectNumbers`: `Integer[] correctNumbers = new Integer[6];` ist unbenutzt und kann weg.\n",
    "status" : "SUCCESS"
  },
  "unitTest" : {
    "tests" : [ {
      "name" : "buyTicketIds()",
      "status" : "FAILED",
      "message" : "expected: <2> but was: <1>"
    }, {
      "name" : "buyTicketsIllegalNumbers()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "draw()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "drawNoDuplicates()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "drawRandom()",
      "status" : "FAILED",
      "message" : null
    }, {
      "name" : "drawAlreadyDrawn()",
      "status" : "FAILED",
      "message" : "Expected java.lang.Exception to be thrown, but nothing was thrown."
    }, {
      "name" : "getWinningNumbersNotDrawnYet()",
      "status" : "PASSED",
      "message" : null
    }, {
      "name" : "buyTicketAlreadyDrawn()",
      "status" : "PASSED",
      "message" : null
    } ]
  }
}