将字符串添加到列表会在double * parsed int

时间:2015-06-23 21:03:40

标签: java string

我已经收集了一系列字符串。

        x = "1"; 
        Integer.parseInt(x);                          //does not throw an exception
        out.add((43.244 * Integer.parseInt(x)) + ""); //throws an exception

投掷

        Caused by: java.lang.NumberFormatException: For input string: "43.244"

我对Java的理解是Integer应该扩展为Double,乘以,并转换为带有+&#34的字符串;"

我有什么误解吗?

编辑:

截断堆栈跟踪

    .... FXML trace ....
Caused by: java.lang.NumberFormatException: For input string: "43.244"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
     ... etc ...

1 个答案:

答案 0 :(得分:2)

Integer永远不会扩展为Double。您可能认为int可以扩展为double,这是真的。但是Integer.parseInt专门查找适合int的文本模式。仅当Integer.parseInt返回int时,*运算符才会将其扩展为double以进行乘法。

请改为使用Double.parseDouble直接生成double,因为"43.244"不代表int,而是double