【发布时间】:2014-04-17 04:31:19
【问题描述】:
好的,这是我遇到问题的代码行:
double endNumber = (double)numbers.pop();
return endNumber;
我的问题是我需要从堆栈中弹出的数字作为双精度数,但我不断收到错误:
线程“main”java.lang.ClassCastException 中的异常:java.lang.String 无法转换为 java.lang.Double
有没有办法解决这个问题?
【问题讨论】:
-
下面的答案是正确的,但我强烈建议研究泛型。将您的堆栈参数化为它存储的引用类型——在本例中为
String,但它可以是任何东西。这样,您不必进行强制转换(编译器会为您执行),并且您会进行类型检查,这将清楚地表明numbers.pop()返回一个String,然后您必须对其进行解析。 -
你弹出的东西是你最后推的东西。如果您推送的最后一个东西是一个字符串,那么弹出的东西将是一个字符串,并且您不能将字符串转换为双精度值。