gpt4 book ai didi

java - 在java中使用堆栈评估后缀表达式

转载 作者:行者123 更新时间:2023-12-01 12:59:26 24 4
gpt4 key购买 nike

我正在尝试编写用于后缀评估的代码,但出现错误,如下所示

java.lang.String 无法转换为 java.lang.Integer,问题出在行obj1=(int) calStack.topAndpop();。问题是我的 ArrayStack topAndpop( ) 方法返回一个 Object 类型为

 public Object topAndpop() throws EmptyStackException{
Object returnPop;
if (isEmpty())
throw new EmptyStackException("Stack empty");
else{
returnPop=top();
pop();
}
return returnPop;

我应该能够将其转换为 int 类型。除了这一行之外,我看不到任何错误。有人可以指出我如何纠正这个问题吗

import java.lang.Math;
public class Calculate{
double result=0;
int obj1,obj2;
public Object cal(String expression) throws OverFlowException,EmptyStackException{

String[] array = expression.split("");//remember
// for (int i=0;i<array.length;i++)
// System.out.println(array[i]);
ArrayStack calStack=new ArrayStack(array.length);
for(int i=0;i<array.length;i++){
if(!(array[i].equals("+") || array[i].equals("-")||array[i].equals("/") || array[i].equals("*"))){
calStack.push(array[i]);
//calStack.print();
}
else {

obj1=(int) calStack.topAndpop();//check how this casting is done
obj2=(int)calStack.topAndpop();
result=calculate(obj2,obj1,array[i]);
System.out.println(result);
calStack.push(result);
}
}
return calStack.topAndpop();

}
public double calculate(int a,int b,String op){
if(op=="+")
return a+b;
else if(op=="-")
return a-b;
else if(op=="/")
return a/b;
else if (op=="^")
return Math.pow(a,b);
else

return a*b;

}

public static void main (String args[]) throws OverFlowException,EmptyStackException{
Calculate c=new Calculate();
System.out.println("result"+c.cal("623+-382/+*2^3"));

}

}

最佳答案

而不是

obj1=(int) calStack.topAndpop();//check how this casting is done
obj2=(int)calStack.topAndpop();

用途:

obj1 = Integer.parseInt((String)calStack.topAndpop());
obj2 = Integer.parseInt((String)calStack.topAndpop());

关于java - 在java中使用堆栈评估后缀表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23639334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com