Java Objekt funktioniert nicht (Konstruktor, Scanner)?
Wenn ich im Konstruktor anzahlGeschenk2 rausnehme, dann funktioniert es das Objekt zu erstellen, obwohl es die selbe Methode ist. Ich schätze, es könnte vielleicht am Scanner liegen (laut der Fehlermeldung).
2 Antworten
Der Scanner ist an den Eingabekanal gebunden. Wenn er geschlossen wird, schließt er auch die verwendeten Ressourcen - in dem Fall also ebenso den Eingabestream (System.in). Der ist beim nächsten Scanner-Objekt, welches Eingaben auslesen möchte also nicht mehr vorhanden / verfügbar.
Entweder du entfernst den close-Aufruf oder besser, du legst dir ein Attribut an, welches eine Scanner-Instanz hält und bspw. innerhalb von finalize geschlossen wird.
Wie die Doku zu nextInt() sagt:
"NoSuchElementException: throws if input is exhausted"
Es gibt also keine weitere Eingabe. Mit scanner.hasNextInt() ließe sich das im Voraus prüfen.