这是一个使用Java Scanner的小程序,它读取一个双精度值的文件并对其求和。
我正在使用某些语言环境进行验证,对于德语\德语,该值为零。
这是代码片段,
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。
请多多指教,谢谢!
发布于 2012-04-02 20:01:50
基本上,8.5在德语语言环境中不是有效的double值。德语(和许多其他欧洲语言环境)使用,作为小数分隔符,使用.作为千位分隔符。因此,在德语中,您的文本文件必须如下所示:
8,5
32.767
3,14159
1.000.000,1发布于 2012-04-02 20:02:55
您的问题是由德国的其他号码格式引起的。在标准的德语语言环境中,千位分隔符是点,小数分隔符是逗号-与文件中的格式相反。因此,在循环的第一次迭代中,hasNextDouble返回false,因为在德语区域设置中,8.5不是格式正确的小数-它应该是8,5。
https://stackoverflow.com/questions/9975991
复制相似问题