Wie genau parst Java Scanner das Doppelte?
Ich verwende einen Windows 7-Computer, dessen "Systemsteuerung \ Uhr, Sprache und Region" "Dänemark" ist.
Laut Dokumentation fürScanner:
Das ursprüngliche Gebietsschema eines Scanners ist der Wert, der von der Locale.getDefault () -Methode zurückgegeben wird.
Aber wenn ich den Code ausführe:
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Es gibt "en_US" aus und löst dann eine java.util.InputMismatchException bei sc.nextDouble () aus. Es funktioniert, wenn der Scanner mit "1,0" initialisiert wird
Wenn ich jedoch das Gebietsschema explizit festlege:
Locale.setDefault(Locale.US);
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Es gibt "en_US" aus und parst dann das Double genau richtig. Vermisse ich etwas oder ist die Dokumentation für den Scanner falsch?
Bearbeiten Auf Anregung von @Perception habe ich mir im ersten Beispiel sc.locale () angesehen. Es wird "da_DK" ausgegeben. Warum also nicht "en_US", wenn dies von der Locale.getDefault () -Methode zurückgegeben wird?