2011-01-18 52 views
0
public static void getClientUpdate() { 
    try { 
     String inputLine; 
     double version = 0; 
     URL url = new URL("http://ds-forums.com/client/version.txt"); 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     while ((inputLine = in.readLine()) != null) 
      System.out.println(inputLine); 
     in.close(); 
     version = inputLine; 
     System.out.println("The version is: " + version); 
    } catch (Exception x) { 
     System.out.println(x); 
    } 
} 

這聽起來很愚蠢,但我有一個包含雙精度型的文本文件,我想將它保存爲雙精度型。相反,它需要一個字符串。我做錯了嗎?還是僅僅需要添加幾個步驟?從URL讀取,將數據存儲爲double?

+1

想知道爲什麼他不能用一個DataInputStream裝飾url.openStream()並使用readDouble()? – 2011-01-18 22:27:43

回答

3

那麼,你需要將字符串解析爲雙精度。例如,使用Double.parseDouble。我應該指出,一個版本字符串聽起來不是一個好主意,可以存儲爲雙精度...您可能需要考慮使用BigDecimal來代替。對於「真實世界」物理值(如距離),加倍通常更好 - 不是「人造」值(如版本號)。我不認爲我甚至會使用BigDecimal說實話......它不像版本號碼通常被視爲與「正常」號碼相同的方式。

您是否考慮過創建自己的類型來表示版本號?

+0

我不知道爲什麼我沒有看java解析雙打的文檔。非常感謝,我會記得在假設我卡住之前檢查API! ^。^ – Kyle 2011-01-18 22:30:16

1

Double.parseDouble(string)就是你所追求的。

2

您可以分析你得到的線:Double.parseDouble(inputLine.trim())

但是,事實上,我不認爲版本應該是雙打。在你的具體情況下,今天,情況可能是這樣,但它很容易改變。這裏是流行的 「versionings」 一些例子,這是不能被表示爲雙打:

3.0.5
2.1.GA
1.5快照
0.8b

所以,我建議離開這個字符串。

+0

你說得很好。也許我應該把它作爲一個字符串。 – Kyle 2011-01-18 22:34:29

相關問題