[英]Java Stack Class Cast Exception
我必须编写一个程序,从键盘读取后缀表达式并将其存储在堆栈中。 在“+”的情况下我一直得到一个类强制转换异常:我无法理解它。 有人能帮助我吗?
String option = (String)stack.pop();
while( stack != null )
{
switch( option )
{
case "+":
int left = (Integer)stack.pop();
int right = (Integer)stack.pop();
int result = left + right;
String temp = (String) stack.pop();
stack.push(result);
break;
你正在从堆栈中弹出东西而不检查它们是什么。 这几乎肯定会给你带来麻烦。 你是如何在第一时间建立堆栈的? 你知道你做过类似的事情吗?
stack.push("string that becomes temp");
stack.push(new Integer(5));
stack.push(new Integer(3));
stack.push("+")
看起来您正在尝试从堆栈中读取一系列字符串输入,并在需要使用转换时使用转换转换数字输入。
假设你的用户已经造成了这样的堆栈推送
stack.push("1234");
stack.push("1");
stack.push("+");
pop例程如下所示:
int left = Integer.parseint(stack.pop());
int right = Integer.parseint(stack.pop());
int result = left + right;
转换是指对象IS所需的类型。 转换适用于您希望它成为正确类型的时间。
我也会让你的堆栈类型为String的通用,以避免产生疑问:
Stack<String> stack = new ....;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.