gpt4 book ai didi

java - Java Scanner 究竟是如何解析 double 的?

转载 作者:搜寻专家 更新时间:2023-10-31 20:03:55 25 4
gpt4 key购买 nike

我使用的是“控制面板\时钟、语言和区域”为“丹麦”的 Windows 7 机器

根据 Scanner 的文档:

A scanner's initial locale is the value returned by the Locale.getDefault() method;

但是当我运行代码时:

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 就好了。我是否遗漏了什么,或者 Scanner 的文档有误?

编辑 按照@Perception 的建议,我查看了第一个示例中的 sc.locale() 。它打印“da_DK”。那么为什么它不是“en_US”,而 Locale.getDefault() 方法返回的是“en_US”?

最佳答案

有两个不同的Locale categories ,一个用于显示,一个用于格式。扫描仪使用 Locale.getDefault(Locale.Category.FORMAT) 但如果您调用 Locale.getDefault() 您将获得用于显示的语言环境。 setLocale(Locale) 方法设置两者。

关于java - Java Scanner 究竟是如何解析 double 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com