我已经收集了一系列字符串。
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 ...
答案 0 :(得分:2)
Integer
永远不会扩展为Double
。您可能认为int
可以扩展为double
,这是真的。但是Integer.parseInt
专门查找适合int
的文本模式。仅当Integer.parseInt
返回int
时,*
运算符才会将其扩展为double
以进行乘法。
请改为使用Double.parseDouble
直接生成double
,因为"43.244"
不代表int
,而是double
。