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

标签 java file-io token

[编辑]澄清这是一个不同的问题:我的问题是关于将字符串解析为双倍以使 token 接受它,并且没有此问题的答案 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 期待字符串,但它发现了双重(成本),但我不知道如何解决这个问题。 token 不兼容读取双倍还是什么?如果没有,我应该使用什么来代替 tokens[2] 来存储我的 double 值?
我尝试过谷歌搜索,但似乎找不到任何解决方案。 抱歉,我对这些东西很陌生。请多多包涵!

最佳答案

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

list.add(new Node1(tokens[0], tokens[1], Double.parseDouble(tokens[2])));

您还可以重写构造函数。

public Node1(String start, String end, String cost) {
  this(start, end, Double.parseDouble(cost));
}

关于java - 不兼容的类型;字符串无法转换为 double : JAVA TOKEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219246/

相关文章:

java - 使用共享首选项扩充 View

java - 什么是NullPointerException,我该如何解决?

java - 使用 Netty 或其他轻量级 NIO 库的请求-响应

javascript - 动态创建文件输入元素

java - jButton1ActionPerformed 和 jButton2ActionPerformed 如何共享 BufferedReader/BufferedWriter?

javascript - 客户端应用程序和 token 身份验证/验证 OAuth

c - 根据 C 中的几个设置词拆分字符串的最简单方法

java - 使用 AsyncTask 编辑 Fragment UI 项目

python - 如何使用完整的 FTP 路径下载 FTP 文件?

node.js - JWT - 将它们存储在 LocalStorage 与 SessionStorage 中