【发布时间】:2015-05-13 15:27:36
【问题描述】:
[编辑] 澄清这是一个不同的问题:我的问题是关于解析 String 以使令牌加倍以接受它,并且此问题 Java Double to String conversion without formatting 的答案均不符合我的标准。
我有一个格式如下的文件:
A B 10
A C 12
A D 8
B D 5
B E 2
...
以下是将上述数据存储在arraylist中的代码。但是它只存储起始节点,结束节点,而不是成本。
List<Node1> list = new ArrayList<Node1>();
while ((line = bufferReader.readLine()) != null) {
String[] tokens = line.split(" ");
list.add(new Node1(tokens[0], tokens[1], tokens[2])); // Error at tokens[2]
}
以下是我的 Node1 类
class Node1 {
String start, end;
double cost;
public Node1(String start, String end, double cost){
this.start = start;
this.end = end;
this.cost = cost;
}
public String getStartNode() {
return start;
}
public String getEndNode(){
return end;
}
public double getCost(){
return cost;
}
}
它在tokens[2] 给了我一个错误,如下所示
Incompatible types; String cannot be converted to double
我将错误理解为,token 需要字符串,但它发现双倍(成本),但我不知道如何解决这个问题。令牌不兼容读取双精度或什么?如果不是,我应该使用什么来代替令牌[2] 来存储我的双精度值?
我试过谷歌搜索,但似乎找不到任何解决方案。
对不起,我对这些东西不熟悉。请多多包涵!
【问题讨论】:
-
试试
Double.parseDouble(tokens[2]) -
tokens是一个字符串数组。它不存储 any 双打。因此,您需要将令牌解析为双精度。最简单的方法:Double.parseDouble(tokens[2]); -
@arhimed 是的,我现在试过了,这没有给我任何错误,但它仍然没有将数值存储在数组列表中