不兼容的类型; 字符串无法转换为double:JAVA TOKEN

Dee*_*Dee 0 java file-io token

[编辑]澄清这是一个不同的问题:我的问题是解析字符串加倍以使令牌接受它而没有这个问题的答案没有格式的Java Double to String转换符合我的标准.

我有一个以下格式的文件:

A B 10
A C 12
A D 8
B D 5
B E 2
... 
Run Code Online (Sandbox Code Playgroud)

以下是将上述数据存储在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]              
}
Run Code Online (Sandbox Code Playgroud)

以下是我的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是给我的错误tokens[2]如下

 Incompatible types; String cannot be converted to double 
Run Code Online (Sandbox Code Playgroud)

我理解错误,因为令牌期待字符串,但它发现双倍(成本),但我不知道如何解决这个问题.不会令牌兼容读取双倍或什么?如果没有,我应该使用什么代替令牌[2]来存储我的双倍值?
我试过谷歌搜索,但似乎无法找到任何解决方案.对不起,我是这个东西的新手.请多多包涵!

Dan*_*ahn 5

您需要将构造函数中的最后一个参数更改为double.

list.add(new Node1(tokens[0], tokens[1], Double.parseDouble(tokens[2])));
Run Code Online (Sandbox Code Playgroud)

您也可以覆盖构造函数.

public Node1(String start, String end, String cost) {
  this(start, end, Double.parseDouble(cost));
}
Run Code Online (Sandbox Code Playgroud)