Keine solche Elementausnahme bei der Verwendung von Scanner in Java
Dieses Tutorial demonstriert die Lösung des Fehlers NoSuchElementException
bei der Verwendung des Scanners in Java.
Keine solche Elementausnahme bei der Verwendung von Scanner in Java
Die Scanner-Klasse wird verwendet, um die Benutzereingabe in einem Java-Programm abzurufen. Es verwendet mehrere Hilfsmethoden wie next()
, nextInt()
usw.
Beim Arbeiten mit diesen Methoden kann der Scanner einen NoSuchElementException
-Fehler in Java werfen. Der Grund für diese Ausnahmen ist unten angegeben:
-
Angenommen, wir haben zwei Scanner-Objekte zum Abrufen von Benutzereingaben; Wenn wir einen Scanner schließen und die Eingabe vom anderen erhalten, wird die
NoSuchElementExcpetion
ausgelöst. Dies liegt daran, dass beim Schließen eines Scanners der Eingabestream geschlossen wird. Aus diesem Grund kann der andere Scanner nicht aus demselben Eingabestrom lesen, da die Methodeclose()
auch den EingabestromSystem.in
schließt.Hier ist ein Beispiel:
package delftstack; import java.util.*; public class Example { public static void main(String args[]) { String DemoString = "Hello, This is delftstack.com"; Scanner DemoScanner1 = new Scanner(System.in); Scanner DemoScanner2 = new Scanner(System.in); DemoScanner1.close(); DemoScanner2.next(); } }
Der obige Code wirft die
NoSuchElementException
. Siehe Ausgabe:Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1478) at delftstack.Example.main(Example.java:13)
Um dieses Problem zu lösen, können wir nur einen Scanner verwenden. Dies gilt auch, wenn ein Scanner in einem Verfahren und der andere in einem anderen Verfahren verwendet wird.
Die Methode
close()
schließt alle Eingabeströme. -
Während der Verwendung von Scanner lesen wir die Zeile, und wenn keine Zeile mehr zum Lesen vorhanden ist, wird die
NoSuchElementException
ausgelöst. Siehe Beispiel:package delftstack; import java.util.*; public class Example { public static void main(String args[]) { String DemoString = "Hello, This is delftstack.com"; Scanner DemoScanner1 = new Scanner(DemoString); System.out.println(DemoScanner1.nextLine()); System.out.println(DemoScanner1.nextLine()); } }
Um das Problem zu lösen, verwenden wir
hasNextLine()
, um zu prüfen, ob der Scanner die nächste Zeile hat. Es gibt true zurück, wenn der Scanner die nächste Zeile hat; andernfalls wird false zurückgegeben.Siehe Beispiel:
package delftstack; import java.util.*; public class Example { public static void main(String args[]) { String DemoString = "Hello, This is delftstack.com"; Scanner DemoScanner1 = new Scanner(DemoString); while (DemoScanner1.hasNextLine()) { System.out.println(DemoScanner1.nextLine()); } } }
Die Ausgabe für diesen Code ist:
Hello, This is delftstack.com
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse