java - 将字符串添加到列表中会在 double * parsed int 上引发 Integer NFE

标签 java string

我有一个要组合的字符串列表。

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

正在 throw

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

我对Java的理解是Integer应该扩宽为Double,相乘,用+""转为字符串

我这里有什么误解吗?

编辑:

截断的堆栈跟踪

    .... 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 ...

最佳答案

Integer永远不会扩大到 Double 。您可能会认为int可以扩大到 double ,这是事实。但是Integer.parseInt专门寻找适合 int 的文本模式。仅当 Integer.parseInt返回 int*运算符将其扩大到 double用于乘法。

使用Double.parseDouble相反,生成 double直接,因为 "43.244"不是 int 的表示,但是 double .

关于java - 将字符串添加到列表中会在 double * parsed int 上引发 Integer NFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31013494/

相关文章:

java - 文本转语音 Android Studio

java - 如何不更改android中edittext的默认值

java - 将 JavaFX Pane 动态加载为插件

java - 将 .txt 文件中的信息存储为变量

string - 来自字符串的公式

java - 从特定位置和下一个分隔符之间的行中提取单词 Java

JAVA:无效的十六进制文字数

java - 在Java中使用String.format而不是字符串连接是更好的做法吗?

c++ - 如何避免在 C/C++ API 中对字符串进行编码混淆?

java - 程序运行时出现ArrayIndexOutOfBoundsException