2016-03-06 73 views
-3

我需要將文件(* .txt)中的數字(以空格分割)轉換爲雙格式。無法將數字從文件轉換爲雙格式

文件包含雙格式數字行,如「3.50 3.51 -3.49 -3.50 -3.51」。但是這段代碼拋出ParseException「不可解析的數字:」3.50「」,我不明白爲什麼會發生這種情況?我試着用Double.parseDouble和.valueOf做同樣的事情,但它總是拋出一個異常。

我對異常的原因感興趣,而不是以另一種方式解決這個任務。有誰能給我解釋一下嗎?

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    Scanner fileI = new Scanner(new File(reader.readLine())); 
    NumberFormat nf = NumberFormat.getInstance(); 

    while(fileI.hasNextLine()) 
    { 
     String[] str = fileI.nextLine().split(" "); 
     for (String it: str) 
     { 
      System.out.println(nf.parse(it).doubleValue()); 
     } 
    } 
    fileI.close(); 
+2

,我沒有得到你所描述的錯誤。你的代碼對我來說工作得很好。 –

+0

這很可能是由於您的語言環境 - 有些國家/地區需要逗號作爲小數點分隔符。嘗試使用['getInstance'](https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#getInstance(java.util.Locale))的版本,該版本需要[ Locale'](https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html)參數。你可以提供類似'Locale.US'的東西。 – YoYo

回答

0

嘗試使用Double.parseDouble(String s)

如果不是你想要的東西,嘗試做一些像

for (String it: str) 
{ 
    try{ 
     System.out.println(nf.parse(it).doubleValue()); 
    }catch (ParseException e){ 
     System.out.println("unappeasable number - "+it); 
    } 
} 
+0

謝謝你,你的回答真的很有幫助! –

+0

@鋁幻影,但這不是真的是你的問題的答案是嗎?請記住,你說你不是「對解決這個任務感興趣的另一種方式」。如果你不堅持你的槍炮,我認真地感覺不合適的其他用戶有類似的答案... – YoYo

+0

@JoD。是的,我仍然不明白爲什麼它會拋出一個異常(我發現try-catch只發生在第一個數組中)。使用Locale參數不會有幫助,並且與使用逗號相同。我想應該徹底閱讀文檔。 –

相關問題