Heim >Java >javaLernprogramm >Wie löse ich die InputMismatchException beim Lesen doppelter Werte mit dem Java-Scanner?

Wie löse ich die InputMismatchException beim Lesen doppelter Werte mit dem Java-Scanner?

Susan Sarandon
Susan SarandonOriginal
2024-12-09 06:15:161006Durchsuche

How to Resolve InputMismatchException When Reading Double Values with Java Scanner?

Scanner-Doppelwert – InputMismatchException behoben

Das Auftreten einer InputMismatchException bei der Verwendung des Scanners zum Lesen von Doppelwerten ist ein häufiges Problem, mit dem Java-Entwickler konfrontiert sind. Diese Ausnahme tritt auf, wenn das aus der Eingabe abgerufene Token nicht mit dem erwarteten Datentyp übereinstimmt oder außerhalb des Bereichs für diesen Typ liegt.

Problem:

Bedenken Sie den folgenden Code :

double gas, efficiency, distance, cost;
Scanner scanner = new Scanner(System.in);

System.out.print("Enter the number of gallons of gas in the tank: ");
gas = scanner.nextDouble();
System.out.print("Enter the fuel efficiency: ");
efficiency = scanner.nextDouble();

Wenn Sie diesen Code ausführen und Werte wie „5,1“ für Gas und Effizienz eingeben, wird eine Fehlermeldung ausgegeben InputMismatchException.

Ursache:

Das vom Scanner verwendete Standardgebietsschema stimmt möglicherweise nicht mit dem erwarteten Format der Eingabewerte überein. Beispielsweise würde in Gebietsschemas, in denen "," als Dezimaltrennzeichen verwendet wird, eine Eingabe wie „5,1“ als gültiger Doppelwert interpretiert, wohingegen in Gebietsschemas, in denen „.“ verwendet wird, eine Eingabe wie „5,1“ als gültiger Doppelwert interpretiert wird. als Trennzeichen verwendet wird, würde dies nicht der Fall sein.

Lösung:

Um dieses Problem zu umgehen, ist es notwendig, das Gebietsschema für den Scanner mithilfe von useLocale() anzugeben. Methode.

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

Durch die Einstellung des Gebietsschemas auf Locale.US erwartet der Scanner Werte im US-Format, wobei „.“ wird als Dezimaltrennzeichen verwendet.

Erklärung:

Mit der Methode useLocale() kann der Entwickler das vom Scanner zum Parsen von Werten verwendete Gebietsschema definieren. Dadurch wird sichergestellt, dass der Scanner Werte im richtigen Format für das angegebene Gebietsschema erwartet.

Das obige ist der detaillierte Inhalt vonWie löse ich die InputMismatchException beim Lesen doppelter Werte mit dem Java-Scanner?. 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