字符串列表到Java的双精度列表

问题描述

| 我有一个包含双打和字符串的组合的数据文件,如下所示:
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());
            }
        }
现在,我正在尝试初始化值,以使parsed [0]成为整数的名称,而parsed [1]成为值。相当于初始化程序 int名称=值; 显然这条线
int parsed[0].toString() = parsed[1]; 
不起作用。我该怎么做?     

解决方法

        这个怎么样
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并根据是否可行来处理丢失的\'= \'。 如果您知道所有可能的字段,则可以使用枚举作为字段名称。 可以使用通过反射设置的对象来代替使用地图。
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.
    }
}
    ,        为什么不使用HashMap 使用哈希映射,您可以根据需要的类型来设置键值。在这种情况下
HashMap<String,Double>()
    ,        您可以将其读取到
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());
}
    ,        也许您想要这样的东西:
  String theName = parsed[0];
  double theValue = Double.parseDouble(parsed[1]);