德国的Java-Scanner区域设置返回0,同时总结双精度值
问题描述:
这是一个使用Java扫描程序的小程序,它读取double值的文件并对其进行总结。德国的Java-Scanner区域设置返回0,同时总结双精度值
我正在使用某些语言环境进行验证,德国\德国的值为零。
这里是代码片段,
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.5 3.14159 1,000,000.1
其他区域设置值返回is1032778.74159。
请注意, 谢谢!
答
8.5在德语语言环境中基本上不是有效的double
值。德语(和许多其他欧洲语言环境)使用,
作为小数点分隔符,而.
作为千位分隔符。因此在德语中,您的文本文件必须如下所示:
8,5
32.767
3,14159
1.000.000,1
+0
非常感谢! – mee 2012-04-03 08:32:44
答
您的问题是由德国的不同数字格式引起的。在标准的德语区域设置中,千位分隔符是点号,小数点分隔符是逗号 - 与文件格式相反。因此,在循环的第一次迭代中,hasNextDouble
返回false,因为8.5
在德语区域设置中不是格式正确的小数 - 它应该是8,5
。
在德国'.'是千位分隔符 – 2012-04-02 12:01:52