Scanner-Doppelwert – InputMismatchException
Frage:
Wenn Scanner zum Lesen eines Doppelwerts in Java verwendet wird , warum wird eine InputMismatchException ausgelöst, nachdem die richtige Eingabe erfolgt ist? bereitgestellt?
Ursache:
Die Ausnahme tritt auf, wenn die Eingabe nicht mit dem erwarteten Datentyp übereinstimmt, normalerweise aufgrund einer Nichtübereinstimmung des Gebietsschemas.
Lösung :
Um das Problem zu beheben, geben Sie beim Erstellen des Scanners das Gebietsschema an Objekt:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
Erklärung:
Jedes Gebietsschema hat seinen eigenen Satz von Dezimal- und Tausendertrennzeichen. Im US-Gebietsschema ist das Dezimaltrennzeichen beispielsweise ein Punkt ('.'), während es in vielen europäischen Gebietsschemata ein Komma (,) ist.
Beim Erstellen des Scannerobjekts ohne Angabe eines Gebietsschemas verwendet Java das Standardsystemgebietsschema. Wenn das Standardgebietsschema ein Komma als Dezimaltrennzeichen verwendet und die Eingabe mit einem Punkt eingegeben wird, versucht der Scanner, die Eingabe als Ganzzahl zu lesen, was zu einer InputMismatchException führt.
Durch die Angabe des US-Gebietsschemas stellen wir sicher dass der Scanner einen Punkt als Dezimaltrennzeichen erwartet und die Eingabe korrekt als Double-Wert liest.
Das obige ist der detaillierte Inhalt vonWarum löst mein Java-Scanner nach einer korrekten Doppeleingabe eine InputMismatchException aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!