Heim  >  Artikel  >  Java  >  Warum löst Scanner.nextDouble() bei der Eingabe eines Double-Werts eine InputMismatchException aus?

Warum löst Scanner.nextDouble() bei der Eingabe eines Double-Werts eine InputMismatchException aus?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 19:42:03984Durchsuche

Why Does Scanner.nextDouble() Throw an InputMismatchException When Inputting a Double Value?

Fehlerbehebung bei InputMismatchException-Fehlern bei der Eingabe von Doppelwerten

Beim Arbeiten mit Doppelwerten kommt es häufig vor, dass bei der Verwendung von Scanner.nextDouble() eine InputMismatchException auftritt. um Eingaben zu lesen. Diese Ausnahme tritt auf, wenn der Benutzer einen ungültigen Doppelwert eingibt, z. B. eine Zeichenfolge oder eine Ganzzahl ohne Dezimalpunkt.

Beachten Sie den folgenden Code:

public double checkValueWithin(int min, int max) {
    double num;
    Scanner reader = new Scanner(System.in);
    num = reader.nextDouble(); // Throws InputMismatchException if input is invalid        
    while (num < min || num > max) {
        System.out.print("Invalid. Re-enter number: ");
        num = reader.nextDouble();
    }
    return num;
}

Dieser Code validiert Benutzereingaben für ein doppelter Wert innerhalb eines angegebenen Bereichs. Wenn der Benutzer jedoch einen Wert wie „1,2“ eingibt (unter Verwendung eines Punkts als Dezimaltrennzeichen), wird eine InputMismatchException ausgelöst.

Um dieses Problem zu beheben, stellen Sie sicher, dass Sie ein Komma (,) anstelle von verwenden Bei der Eingabe von Doppelwerten wird als Dezimaltrennzeichen ein Punkt (.) verwendet. Geben Sie beispielsweise anstelle von „1,2“ „1,2“ ein. Alternativ können Sie eine andere Methode wie Scanner.next() verwenden und die Eingabe manuell als Double analysieren, um eventuell auftretende Ausnahmen zu behandeln.

Das obige ist der detaillierte Inhalt vonWarum löst Scanner.nextDouble() bei der Eingabe eines Double-Werts eine InputMismatchException aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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