Heim >Java >javaLernprogramm >Warum erhalte ich eine InputMismatchException, wenn ich doppelte Werte mit dem Scanner lese?
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!