繁体   English   中英

将 Double.parseDouble 用于已被转换为 String 的对象时出错

[英]Error while using Double.parseDouble to an Object that has been caste as String

我正在编写一个中缀求值程序,但我在使用此语句时遇到了问题:

c = Double.parseDouble((String) operands.pop());

“操作数”是一个存储操作数的堆栈。 .pop() 方法返回一个 T 类型的对象(因为堆栈是一个 T 类型的 ArrayList)。 由于 Double.parseDouble 需要一个字符串作为参数,因此我将其转换为字符串。

但是,我收到此错误: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String

我犯了什么错误?

异常实际上发生在表达式上

(String) operands.pop()

您不能使用(String)将 double 转换为字符串,因为它不是安全转换。

编译器告诉你, operands.pop()给出的值已经是双operands.pop()值了!

如果要进行强制转换,则需要先对其使用toString()方法。

异常表明 pop 方法正在返回 java.lang.Double() 的对象,因此无需强制转换和解析它。 即使您由于某种原因想要进行转换和解析,也可以使用 String.valueOf(operands.pop())。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM