Heim >Java >javaLernprogramm >Warum erhalte ich eine InputMismatchException, wenn ich doppelte Werte mit dem Scanner lese?

Warum erhalte ich eine InputMismatchException, wenn ich doppelte Werte mit dem Scanner lese?

Linda Hamilton
Linda HamiltonOriginal
2024-11-05 21:21:02318Durchsuche

Why Am I Getting an InputMismatchException When Reading Double Values with Scanner?

Warum tritt die InputMismatchException beim Abrufen von Doppelwerten auf?

In Java kann bei Verwendung des Scanners zum Lesen von Doppelwerten eine InputMismatchException auftreten, wenn Die Eingabe entspricht nicht genau dem erwarteten Dezimalformat.

Verstehen des Problems:

Der bereitgestellte Code enthält die Methoden checkValueWithin und askForMarks. checkValueWithin soll numerische Eingaben innerhalb eines bestimmten Bereichs validieren.

Das Problem tritt bei der askForMarks-Methode auf, bei der erwartet wird, dass es sich bei der Benutzereingabe um doppelte Werte im Bereich von 0 bis 30 handelt. Die Eingabe ist jedoch möglicherweise formatiert falsch, was dazu führt, dass der Scanner beim Parsen des Double-Werts fehlschlägt.

Fix:

Dieses Problem kann behoben werden, indem sichergestellt wird, dass die Benutzereingabe mit einem Komma formatiert wird Dezimaltrennzeichen anstelle eines Punktes. Geben Sie beispielsweise anstelle von 1,2 1,2 ein. Dies stimmt mit der Doppelwertdarstellung in Java überein.

Hier ist der geänderte Code für askForMarks:

public void askForMarks() {
    double marks[] = new double[student];
    int index = 0;
    Scanner reader = new Scanner(System.in);
    while (index < student) {
        System.out.print("Please enter a mark (0..30): ");
        marks[index] = (double) checkValueWithin(0, 30);
        index++;
    }
}

Diese Änderung stellt sicher, dass Doppelwerte korrekt eingegeben werden, wodurch verhindert wird, dass der Scanner auf eine InputMismatchException stößt.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine InputMismatchException, wenn ich doppelte Werte mit dem Scanner lese?. 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