Ich versuche, ein einfaches Menü mit einer Do-While-Schleife in Java zu machen. Mein Code sieht wie folgt aus:Einfache Menüs mit Do-While-Schleifen in Java
int choice;
Scanner scanChoice = new Scanner(System.in);
do {
System.out.println("Pick an option. 1 2 or 3.");
System.out.println("1. Apple");
System.out.println("2. Pear");
System.out.println("3. Pineapple");
choice = scanChoice.nextInt();
} while (choice < 1 || choice > 3);
System.out.println("You picked " + choice);
Das Problem ist, dass ich jedes Mal versuchen, es zu laufen, es wirft „java.util.NoSuchElementException“. Der vollständige Fehler ist unten:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at mainPackage.Main.fruitMenu(Main.java:135)
at mainPackage.Main.main(Main.java:103)
Ich weiß, dass dies, weil scanChoice.hasNextInt()
kehrt falsch ist, aber ich bin nicht sicher, wie dies zu beheben. Wenn ich eine if-Anweisung (if (scanChoice.hasNextInt())
) hinzufüge, gibt die Methode scanChoice.hasNextInt()
immer noch false zurück, also wird nur die Zeile übergeben, die die Variable choice
initialisiert, und diese Variable wird nie initialisiert.
Wer weiß, wie man das beheben kann?
EDIT: Das Problem ist, dass es nicht darauf wartet, dass der Benutzer eine andere ganze Zahl eingibt. Die Funktion scanchoice.nextInt()
und die Funktion scanChoice.nextLine()
geben beide sofort keinen Wert zurück, ohne darauf zu warten, dass der Benutzer einen Wert eingibt. Irgendeine Möglichkeit, es auf Eingabe warten zu lassen?
Aber Sie haben eine Zahl eingeben, nicht nur auf "Enter", oder? –
Es gibt keine Zeit für mich, eine Nummer einzugeben. Es geht einfach weiter und wirft die 'NoSuchElementException' –
Wie führen Sie diesen Code? Es sollte Ihnen diese Ausnahme nicht geben, es sei denn, Sie starten es mit einer leeren Standardeingabe, z. durch ein Skript oder vielleicht in einer IDE, die keine Texteingabe für Befehlszeilen-Apps unterstützt. Vergleichen http://StackOverflow.com/Questions/13729294/Nosuchelementexception-with-Java-Util-scanner#comment18864529_13729470 – zapl