2011-01-18 54 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

相关问题