列表中的双精度java列表

时间:2011-06-14 16:40:26

标签: java string double

我有一个包含双打和字符串组合的数据文件,如下所示:

Rmax=2.3
Rmin=1.0

等。

我正在使用split()来删除=这样:

while ((strLine = br.readLine()) != null) {
            String phrase = strLine;                
            try {
                //splits to variable name, value
                String[] parsed = phrase.split("[=]");                      
                int parsed[0].toString() = parsed[1];

            } catch (PatternSyntaxException e) {
                System.out.println("Error: " + e.getMessage());
            }
        }

现在我正在尝试初始化值,以便解析[0]成为整数的名称,解析后[1]成为值。相当于初始化程序 int name = value;

显然是行

int parsed[0].toString() = parsed[1]; 

不起作用。我该怎么做呢?

4 个答案:

答案 0 :(得分:3)

这个怎么样

Map<String, Double> map = new HashMap<String,Double>()
while ((strLine = br.readLine()) != null) {
    //splits to variable name, value
    String[] parsed = phrase.split("=");
    String name = parsed[0];
    double value = Double.parseDouble(parsed[1]);
    map.put(name, value);
}

如前所述,您必须捕获NumberFormatException并处理缺少的'=',具体取决于这些是否可行。

如果您知道所有可能的字段,则可以使用枚举作为字段名称。


您可以使用通过反射设置的对象,而不是使用Map。

class Config {
    double Rmax;
    double Rmin;
    // add more fields here.
}

Config config = new Config;
    while ((strLine = br.readLine()) != null) {
    //splits to variable name, value
    String[] parsed = phrase.split("=");
    try {
       String name = parsed[0];
       double value = Double.parseDouble(parsed[1]);
       Config.class.getField(name).setDouble(value);
    } catch (Exception e) {
       // log exception.
    }
}

答案 1 :(得分:2)

为什么不使用HashMap

使用哈希映射,您可以使用您想要的类型设置键值。在这种情况下,你想要

HashMap<String, Double> map = new HashMap<String,Double>()

答案 2 :(得分:2)

您可以将其读取到Properties对象并从那里进行转换:

Properties props = new Properties();
props.load( /* your file as InputStream */ );
Map<String, Double> parsed = new HashMap<String, Double>();
for(Map.Entry<Object, Object> entry : props.entrySet()){
    parsed.put(entry.getKey().toString(),
    Double.valueOf(entry.getValue().toString());
}

答案 3 :(得分:1)

也许你想要这样的东西:

  String theName = parsed[0];
  double theValue = Double.parseDouble(parsed[1]);