2017-04-04 5 views
-2

So kann ich nicht scheinen, den Fehler zu verstehen, den das Programm fortwährend wirft. es passiert nur, wenn ich die Option 2 aus meinem Menü auswähle und die Zeile des Codes, an die es mich für den Fehler verweist, ist die Zeile 140, die "userChoice = one.nextInt();"Kann Fehler nicht herausfinden? (Java)

Irgendwelche Ideen, was könnte das Problem sein? Dies ist der Fehlercode

java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at TickerReader.main(TickerReader.java:140) 

ich den Code auf Pastebin veröffentlicht, da es ein längliches Stück Code ist https://pastebin.com/dqXQhJvN

+1

Bitte tun Sie Ihre Forschung beim nächsten Mal: ​​http://stackoverflow.com/questions/13042008/java-util-nosuchelementexception-scanner-reading-user-input – Tom

+0

können wir sehen, wie Sie den Scanner Objekt –

Antwort

1

Es ist, weil es nicht mehr Ints sind zu lesen. Sie sollten zuerst hasNextInt() überprüfen, bevor Sie nextInt() anrufen.

+0

verwenden die verwenden hasNext() -Funktion. if (scan.hasNext()) {// Lese die Eingabe} – victor

+0

Wenn Sie das tun, müssen Sie manuell überprüfen, dass die nächste Eingabe eine ganze Zahl war. (Ich glaube, du hast das geschrieben, als ich meine Antwort editiert habe). –

+0

Kann der Upvoter die Frage lesen? Dies ist offensichtlich nicht die Lösung für das Problem, nur eine Möglichkeit, ein Symptom zu behandeln. – Tom

0

Bei der Verwendung des Scanners nextInt() ist es immer am besten, zuerst zu überprüfen, ob es zuerst hasNextInt() ist.

0

Sie sollten überprüfen, ob es mehr Ints sind zu lesen hasNextInt() es tun sollte, könnten Sie auch Ihre ändern, wenn/else-Anweisungen für eine switch(userChoice) Aussage

0

konnte ich den Fehler beheben, indem

Scanner two = new Scanner(System.in); two.close(); Und setzen sie vor der if, sonst if-Anweisung.

Verwandte Themen