这是一个使用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.5 32,767 3.14159 1,000,000.1
其他语言环境返回的值为1032778.74159。
请告知, 谢谢!
答案 0 :(得分:7)
8.5基本上不是德语语言环境中的有效double
值。德语(以及许多其他欧洲语言环境)使用,
作为小数分隔符,.
作为千位分隔符。所以在德语中,你的文本文件必须如下所示:
8,5
32.767
3,14159
1.000.000,1
答案 1 :(得分:3)
您的问题是由德国不同的数字格式引起的。在标准德语语言环境中,千位分隔符是点,小数点分隔符是逗号 - 与文件格式相反。因此,在循环的第一次迭代中,hasNextDouble
返回false,因为8.5
不是德语区域设置中格式正确的十进制 - 它应该是8,5
。