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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage