Heim > Java > javaLernprogramm > Warum löst mein Java-Scanner eine NoSuchElementException aus und wie kann ich das beheben?

Warum löst mein Java-Scanner eine NoSuchElementException aus und wie kann ich das beheben?

Barbara Streisand
Freigeben: 2024-12-05 15:03:14
Original
651 Leute haben es durchsucht

Why Does My Java Scanner Throw a NoSuchElementException, and How Can I Fix It?

NoSuchElementException-Frustrationen mit Java.Util.Scanner

Das Auftreten eines „NoSuchElementException“-Fehlers kann verwirrend sein, insbesondere für Java-Neulinge wie Sie. Dieser Fehler tritt auf, wenn die Scanner-Klasse das nächste Token nicht aus dem Eingabestream abrufen kann. Lassen Sie uns in Ihren spezifischen Code eintauchen, um die Grundursache aufzudecken:

import java.util.Scanner;

public class Addition {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    // Problem: Reading input values without checking for input availability

    System.out.print("Enter First Integer: ");
    number1 = input.nextInt(); // Exception occurs here when no input is provided

    System.out.print("Enter Second Integer: ");
    number2 = input.nextInt(); // Exception occurs here if input is not available for this prompt

    sum = number1 + number2; // Addition occurs, assuming input values are available

    System.out.printf("Sum is %d\n", sum); // Displays the sum, if input is available
  }
}
Nach dem Login kopieren

Das Problem liegt darin, dass der Code versucht, Eingaben zu lesen, ohne zuvor zu überprüfen, ob Eingaben verfügbar sind. Die Methode input.nextInt() löst eine „NoSuchElementException“ aus, wenn der Benutzer keine Eingabe macht oder etwas anderes als eine Ganzzahl eingibt.

Lösung:

Zu beseitigen Um dieses Problem zu beheben, müssen wir die Verfügbarkeit der Eingaben prüfen, bevor wir versuchen, sie abzurufen it:

if (input.hasNextInt()) {
  number1 = input.nextInt();
} else {
  // Handle the case where no input is provided
}
Nach dem Login kopieren

Erklärung:

Die Methode hasNextInt() prüft, ob das nächste Token im Eingabestream eine Ganzzahl ist. Wenn es „true“ zurückgibt, kann die Methode input.nextInt() verwendet werden, um die Ganzzahl abzurufen. Andernfalls kann der Code die Situation problemlos bewältigen, indem er beispielsweise Nummer1 auf 0 setzt oder eine Fehlermeldung anzeigt.

Durch die Implementierung dieser Prüfung löst Ihr Code keine „NoSuchElementException“ mehr aus und verhält sich wie erwartet Benutzer können ganze Zahlen eingeben und deren Summe berechnen.

Das obige ist der detaillierte Inhalt vonWarum löst mein Java-Scanner eine NoSuchElementException aus und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage