「ControlPanel\Clock、Language、andRegion」が「Denmark」であるWindows7マシンを使用しています
スキャナーのドキュメントによると:
スキャナーの初期ロケールは、Locale.getDefault()メソッドによって返される値です。
しかし、私がコードを実行すると:
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
「en_US」を出力してから、sc.nextDouble()でjava.util.InputMismatchExceptionをスローします。スキャナーが「1,0」で初期化されている場合に機能します
ただし、ロケールを明示的に設定した場合:
Locale.setDefault(Locale.US);
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
「en_US」を出力してから、doubleを適切に解析します。何かが足りないのですか、それともスキャナーのドキュメントが間違っていますか?
編集@Perceptionの提案に従って、最初の例でsc.locale()を確認しました。「da_DK」を出力します。では、Locale.getDefault()メソッドによって返されるのが「en_US」ではないのはなぜですか?