java.util.InputMismatchException Fehler Java Scanner

NoOffensePls

Neues Mitglied
Hallo, kann mir jemand helfen mein Problem zu lösen?
Im CMD bekomme ich folgenden Fehler:

Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at ToDo.main(todo.java:16)

So sieht das Script meiner Main Class aus:

Main Class:
public static void main (String [] args){


        System.out.println("Willkommen ...?");

        System.out.println("[1] ..." + '\n' + "[2] ..." + '\n' + "[3] ..." + '\n' + "[4] ...");

        Scanner scanner = new Scanner(System.in);
        scanner.useDelimiter("\n");

        int auswahl = scanner.nextInt();
        String neuerTitel = scanner.next();

        if (auswahl==1){

            listeAlleAufgaben();
        }else{
            if (auswahl==2){

                neueAufgabe(neuerTitel);
            }else{
                if (auswahl==3){

                    loescheAufgabe(neuerTitel);
                }else{
                    if (auswahl==4){

                        System.out.println("Ungültige Eingabe");
                    }
                    }

                }
            }

        scanner.close();
    }
 

kneitzel

Top Contributor
Also der Code alleine reicht erst einmal nicht aus. Wo genau ist die Exception geworfen worden? (Sprich: Was ist die Zeile 16 in todo.java?)
Und was genau hast du eingegeben?

Wenn ich raten müsste: Du willst Zahl und Titel eingegeben haben. Delimiter ist aber nur der Zeilenumbruch/Enter. Wenn Du es aber nun mit Leerzeichen eingibst, dann versucht er Zahl und Text als int zu lesen was natürlich nicht geht.

Allgemeine Anmerkungen:
- Scanner zu schließen schließt auch den zugrunde liegenden Stream. Dadurch schliesst Du System.in, was man nicht machen sollte.
- Du kannst bei if else if die Geschweiften Klammern nach dem else weglassen. Dann hast Du deutlich weniger Einrückungen.
- Bei so einer Auswahl macht es Sinn, switch zu benutzen statt if else if else if else ...
 

Mr Ma

Mitglied
Scanner zu schließen schließt auch den zugrunde liegenden Stream. Dadurch schliesst Du System.in, was man nicht machen sollte.
Eine Frage bitte dazu. Im Internet stoße ich oft auf die Meinung den Scanner unbedingt zu schließen, etwa um "Ressourcen freizugeben" . Ein Beispiel hier:
"Wichtig ist, dass der Scanner zum Schluss mit close() geschlossen wird." aus:https://javabeginners.de/Ein-_und_Ausgabe/Scanner.php
Warum ist es denn nun nicht gut den Scanner zu schließen? Oder bezieht sich diese Aussage nur darauf, wenn der Scanner in Schleifen arbeitet?
Wo genau liegt da das Problem?
 

mihe7

Top Contributor
Im Internet stoße ich oft auf die Meinung den Scanner unbedingt zu schließen, etwa um "Ressourcen freizugeben"
Und damit hast Du schon des Pudels Kern genannt. Code soll die Ressourcen freigeben, für die er verantwortlich ist - aber nur für die und für keine anderen :)

Stell Dir mal vor, Du öffnest eine Datei und rufst eine Methode auf, die z. B. eine Zeile aus der Datei liest. Dann möchtest Du ja davon ausgehen können, dass nach dem Methodenaufruf die Datei weiterhin geöffnet ist.

Die aufgerufene Methode ist nicht für die Ressource verantwortlich, daher hat sie diese auch nicht freizugeben.

System.in ist eine Ressource, die von der Java Plattform zur Verfügung gestellt wird. Wenn Du einen Scanner für System.in einrichtest und diesen Scanner schließt, wird System.in geschlossen. Du ziehst der Plattform die Ressource unter den Füßen weg. In der Folge kann kein weiterer Code von System.in lesen.

Etwas anderes wäre Code, der eine Datei öffnet, einen Scanner für den FileInputStream einrichtet, mit dem Scanner aus der Datei liest und am Ende, wenn die Datei geschlossen werden kann, den Scanner schließt. Da wäre das Schließen völlig in Ordnung, da der FileInputStream sowieso geschlossen werden muss.
 

mihe7

Top Contributor
Das habe ich also falsch gemacht, seitdem ich den Scanner benutze. Und ich habe es nicht einmal registriert!
Super, vielen Dank dafür🍾
Fies ist: bei kleinen Progrämmchen merkt man das z. T. nicht. Wenn Du aber mal in einer Schleife den Scanner für System.in schließt, wirst Du ganz schnell erkennen, dass das keine gute Idee war :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
C java.util Timer läuft zu langsam? Java Basics - Anfänger-Themen 1
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
A Java.util.Arrays Java Basics - Anfänger-Themen 15
F java.util.ArrayList Java Basics - Anfänger-Themen 3
B java.util.Date noch zeitgemäß? Java Basics - Anfänger-Themen 6
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
M java.util.scanner Fehler Java Basics - Anfänger-Themen 5
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
N java.util.Random - Zwei Zahlen mit festgesetzter Wahrscheinlichkeit? Java Basics - Anfänger-Themen 15
A Vererbungshierachie und java.util.Date Java Basics - Anfänger-Themen 31
W Erste Schritte import java.util.scanner funktioniert nicht Java Basics - Anfänger-Themen 2
I google java-diff-util - Patch abspeichern Java Basics - Anfänger-Themen 1
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
H Repräsentation von DateTime (Joda) in Java Util Date überführen Java Basics - Anfänger-Themen 3
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7
D java.util.NoSuchElementException: No line found Java Basics - Anfänger-Themen 11
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
S Compiler-Fehler Scanner java.util NoSuchElementExeption Java Basics - Anfänger-Themen 8
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
B ThreadPoolExecutor - import java.util.concurrent Java Basics - Anfänger-Themen 2
R java.util.Random Java Basics - Anfänger-Themen 8
S Methoden Sortieren: java.util.Arrays.useLegacyMergeSort Java Basics - Anfänger-Themen 4
F java.util.scanner wird übersprungen Java Basics - Anfänger-Themen 9
O java.util.Scanner hängt sich auf Java Basics - Anfänger-Themen 5
E Klassen java.util.ArrayList<E> als Generics Java Basics - Anfänger-Themen 16
D java.util.ResourceBundle - exception Java Basics - Anfänger-Themen 4
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
M java.util.ArrayList to java.sql.Array Java Basics - Anfänger-Themen 4
D java.util.Currency Java Basics - Anfänger-Themen 2
T java.util.Date Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
N java.util.Random Java Basics - Anfänger-Themen 6
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
Luk10 Java.util.Scanner Java Basics - Anfänger-Themen 11
H ArrayList über java.util.Scanner füllen Java Basics - Anfänger-Themen 5
P ArrayList<E> in package java.util Java Basics - Anfänger-Themen 4
N java.util.Arrays.sort Warum sind Leerzeichen vor alphabetischen Zeichen sortiert? Java Basics - Anfänger-Themen 12
K java.util.ConcurrentModificationException problem in der Logik? Quaxli-Tutorial Java Basics - Anfänger-Themen 9
T import java.util.scanner cannot be resolved Java Basics - Anfänger-Themen 19
D java.util.Currency.getInstance exception mit brit. Pfund Java Basics - Anfänger-Themen 4
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
J Java.Util.Properties wrapper class (Review Request) Java Basics - Anfänger-Themen 2
S BITTE UM HILFE HASHTABLE/import java.util.Hashtable in Ecplipse Java Basics - Anfänger-Themen 12
G DateFormat - Datumsformat java.util.Locale interpretieren Java Basics - Anfänger-Themen 2
? java.util.Properties Wert von key mehrfach vorhanden Java Basics - Anfänger-Themen 13
E java.util.ConcurrentModificationException Problem Java Basics - Anfänger-Themen 5
F java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
Q java.util.loggging neue datei erstellen Java Basics - Anfänger-Themen 3
L Exception in thread "main" java.util.NoSuchElement Java Basics - Anfänger-Themen 4
hedges Würfelwurf mit java.util.Random ohne 0 Java Basics - Anfänger-Themen 6
W Java.util.Map in Bean wandeln Java Basics - Anfänger-Themen 2
M java.util.Timer und geplante Abarbeitung Java Basics - Anfänger-Themen 2
U java.util.Date to java.sql.Date Java Basics - Anfänger-Themen 2
K Wer kann mir java.util.Hastable erklären. Java Basics - Anfänger-Themen 3
K Probleme mit java.util.hashtable Java Basics - Anfänger-Themen 10
K Zipfile erstellen mit java.util.zip.* Java Basics - Anfänger-Themen 2
J Eclipse und printf und import util.java.scanner; Java Basics - Anfänger-Themen 4
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
K Prob mit java.util.regex.matches-String wird nicht erkannt? Java Basics - Anfänger-Themen 9
T Möchte Charwert 23C° mit java.util.Scanner einlesen macht Pr Java Basics - Anfänger-Themen 2
K java.util.Calendar und Objekt Java Basics - Anfänger-Themen 7
M Seltsames java.util.Date Problem Java Basics - Anfänger-Themen 6
M java.util.Scanner kann nicht aufgelöst werden - warum nicht? Java Basics - Anfänger-Themen 4
RaoulDuke java.util.Date parsen Java Basics - Anfänger-Themen 5
M Source Code von java.util.SubList Java Basics - Anfänger-Themen 2
ff java.util.date Java Basics - Anfänger-Themen 2
O reguläre Ausdrücke bei java.util.regex.Pattern Java Basics - Anfänger-Themen 4
K Keine weitere (java.util.)Scanner Eingabemöglichkeit? Java Basics - Anfänger-Themen 5
A wie implementiere ich java.util.Scanner? Java Basics - Anfänger-Themen 12
D Mit java.util.Arrays.sort die negativen Zahlen hinten Java Basics - Anfänger-Themen 4
C java.util.Timer und wait() oder so was Java Basics - Anfänger-Themen 3
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
S java.awt.List vs. java.util.List Java Basics - Anfänger-Themen 2
D dumme Frage! (was heist 'import java.util.*;' ?) Java Basics - Anfänger-Themen 3
M Java auf Raspberry Pi Java Basics - Anfänger-Themen 78
M Java Gui Java Basics - Anfänger-Themen 11
M Java Array Java Basics - Anfänger-Themen 8
R Ist es möglich, ein Zahlungs-Gateway mit Java zu bauen? Java Basics - Anfänger-Themen 11
M Java FX Java Basics - Anfänger-Themen 1
M Java Website Java Basics - Anfänger-Themen 2
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
melisax Beispiel Java umprogrammieren Java Basics - Anfänger-Themen 23
I Argumente einer Java Methode Java Basics - Anfänger-Themen 14
M Java Liste streamen Java Basics - Anfänger-Themen 10
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
M Type Erasure in Java Java Basics - Anfänger-Themen 12
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
M Java Backend Java Basics - Anfänger-Themen 74
mihe7 Konstante in Java Java Basics - Anfänger-Themen 58
Kotelettklopfer Java und das leidige Thema "wording" Java Basics - Anfänger-Themen 61
thor_norsk Datentypen unter Java Java Basics - Anfänger-Themen 3
H Java NullPointerException Java Basics - Anfänger-Themen 4
M JAVA Programm in Website einbinden Java Basics - Anfänger-Themen 19
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
L Java reduce() + Lambda Java Basics - Anfänger-Themen 10

Ähnliche Java Themen


Oben