我正在使用“控制面板\时钟、语言和区域”为“丹麦”的 Windows 7 机器
根据Scanner的文档:
扫描仪的初始语言环境是 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”,然后解析双精度就好了。我是否遗漏了什么,或者扫描仪的文档有误?
编辑按照@Perception 的建议,我在第一个示例中查看了 sc.locale() 。它打印“da_DK”。那么为什么不是“en_US”,而这是 Locale.getDefault() 方法返回的内容呢?