2012-04-02 80 views
2

這是一個使用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。

請注意, 謝謝!

+3

在德國'.'是千位分隔符 – 2012-04-02 12:01:52

回答

7

8.5在德語語言環境中基本上不是有效的double值。德語(和許多其他歐洲語言環境)使用,作爲小數點分隔符,而.作爲千位分隔符。因此在德語中,您的文本文件必須如下所示:

8,5 
32.767 
3,14159 
1.000.000,1 
+0

非常感謝! – mee 2012-04-03 08:32:44

3

您的問題是由德國的不同數字格式引起的。在標準的德語區域設置中,千位分隔符是點號,小數點分隔符是逗號 - 與文件格式相反。因此,在循環的第一次迭代中,hasNextDouble返回false,因爲8.5在德語區域設置中不是格式正確的小數 - 它應該是8,5