首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java-德国的扫描仪区域设置在求和双精度值时返回0

Java-德国的扫描仪区域设置在求和双精度值时返回0
EN

Stack Overflow用户
提问于 2012-04-02 19:58:44
回答 2查看 291关注 0票数 2

这是一个使用Java Scanner的小程序,它读取一个双精度值的文件并对其求和。

我正在使用某些语言环境进行验证,对于德语\德语,该值为零。

这是代码片段,

代码语言:javascript
复制
s= new Scanner((Readable) new BufferedReader(new FileReader("ScanNum")));
s.useLocale(Locale.GERMAN);
System.out.println(s.locale());
while(s.hasNextDouble())
{
sum+=s.nextDouble();
}

保存双精度值的文件为8.532,767 3.14159 1,000,000.1

其他地区的返回值是1032778.74159。

请多多指教,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-02 20:01:50

基本上,8.5在德语语言环境中不是有效的double值。德语(和许多其他欧洲语言环境)使用,作为小数分隔符,使用.作为千位分隔符。因此,在德语中,您的文本文件必须如下所示:

代码语言:javascript
复制
8,5
32.767
3,14159
1.000.000,1
票数 7
EN

Stack Overflow用户

发布于 2012-04-02 20:02:55

您的问题是由德国的其他号码格式引起的。在标准的德语语言环境中,千位分隔符是点,小数分隔符是逗号-与文件中的格式相反。因此,在循环的第一次迭代中,hasNextDouble返回false,因为在德语区域设置中,8.5不是格式正确的小数-它应该是8,5

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9975991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档