Doppelter Wert des Scanners – InputMismatchException

Lesezeit: 3 Minuten

Doppelter Wert des Scanners –
fangen23

Ich habe versucht, den Scanner auf einfachste Weise zu verwenden:

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();

Aber nach der ersten Eingabe 5.1 es wirft:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:909)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextDouble(Scanner.java:2456)
    at udacity.MileagePrinter.main(MileagePrinter.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Die JavaDocs Zustand:

Wird von einem Scanner ausgelöst, um anzuzeigen, dass das abgerufene Token nicht mit dem übereinstimmt
Muster für den erwarteten Typ oder dass das Token außerhalb des Bereichs für den erwarteten Typ liegt.

Aber meiner Meinung nach sehen alle richtig aus und sollten OK funktionieren.

Fragen:

  • Warum passiert das in dieser Situation?
  • Wie kann man dieses Problem umgehen?

  • An dem von Ihnen bereitgestellten Code-Snippet ist nichts auszusetzen, der Fehler liegt woanders.

    – Tdorno

    17. Juni 2013 um 15:02 Uhr

  • Ohne das Gebietsschema anzugeben, wird your . sollte wohl eine sein , in Ihrem Gebietsschema

    – Andrea Ligios

    17. Juni 2013 um 15:04 Uhr

  • @Tdorno hängt davon ab, welches Gebietsschema Sie verwenden, möglicherweise verwenden Sie das US-Gebietsschema

    – Viktor Mellgren

    17. Juni 2013 um 15:06 Uhr

1646242028 629 Doppelter Wert des Scanners –
Alexis C.

Sie sollten ein Gebietsschema für Ihren Scanner festlegen.

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

Von dem Dok :

Eine Instanz dieser Klasse kann Zahlen sowohl in den Standardformaten als auch in den Formaten des Gebietsschemas des Scanners scannen. Das anfängliche Gebietsschema eines Scanners ist der Wert, der von der Locale.getDefault()-Methode zurückgegeben wird; Sie kann über die Methode useLocale(java.util.Locale) geändert werden

Die lokalisierten Formate werden anhand der folgenden Parameter definiert, die für ein bestimmtes Gebietsschema aus dem DecimalFormat-Objekt dieses Gebietsschemas, df, und seinem DecimalFormatSymbols-Objekt, dfs, entnommen werden.

Ihr Standardgebietsschema verwendet also sicherlich ein DecimalFormat, das anstelle eines Punktes ein Komma als Dezimaltrennzeichen erwartet.

  • .useLocale() kehrt zurück thisdas kannst du verkürzen new Scanner(System.in).useLocale(Locale.US)

    – fg

    17. Juni 2013 um 15:02 Uhr

  • Ich habe versucht, dieses Programm auszuführen, konnte aber kein Problem feststellen. Darf ich wissen warum das so ist?

    – Prasad Charkar

    17. Juni 2013 um 15:05 Uhr

  • @PrasadKharkar wahrscheinlich, weil das Dezimaltrennzeichen im Standardgebietsschema Ihrer JVM der Punkt ist

    – fg

    17. Juni 2013 um 15:06 Uhr

  • @nazar_art importiere das richtige Paket; Locale ist in java.util.Locale

    – fg

    17. Juni 2013 um 15:07 Uhr

  • @nazar_art Sie verwenden Intellij IDEA? Importe sollten automatisch erfolgen … Im schlimmsten Fall werden Sie gefragt, was importiert werden soll.

    – fg

    17. Juni 2013 um 15:15 Uhr

Stellen Sie sicher, dass Sie das richtige Gebietsschema verwenden

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

Vielleicht verwenden Sie ein Gebietsschema, in dem “,” das Dezimaltrennzeichen ist

  • Ja, du hast Recht, als ich es versuchte 5,1 alles war in Ordnung. Kann ich das als Standardwert ändern?

    – fangen23

    17. Juni 2013 um 15:10 Uhr


  • Ich glaube, wenn Sie zu “Region und Sprache” gehen, wenn Sie Windows haben, können Sie das Gebietsschema in das gewünschte Gebietsschema ändern.

    – Viktor Mellgren

    18. Juni 2013 um 8:31 Uhr

  • Ich bin neuer Benutzer von Ubunta 12.04 (seit 2 Wochen)

    – fangen23

    18. Juni 2013 um 17:57 Uhr


  • versuch das dann: blog.andrewbeacock.com/2007/01/…

    – Viktor Mellgren

    19. Juni 2013 um 8:30 Uhr

  • Das Gebietsschema war das Problem, als ich vor demselben stand – stackoverflow.com/questions/65551133/…

    – Kalema Edgar

    3. Januar 2021 um 15:09 Uhr

914410cookie-checkDoppelter Wert des Scanners – InputMismatchException

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy