我在后缀计算器中遇到此错误:integerOperand无法解析或不是字段。下面,我显示了主要代码以及IntegerOperand类文件中的代码。我怎样才能解决这个问题?我试图从IntegerOperand类调用add函数。
public class IntegerOperand implements CalculatorOperand<IntegerOperand> {
BigInteger value;
IntegerOperand (BigInteger value) {
this.value = value;
}
public IntegerOperand add (IntegerOperand that) {
return new IntegerOperand(this.value.add(that.value));
}
public IntegerOperand subtract (IntegerOperand that) {
return new IntegerOperand(this.value.subtract(that.value));
}
public IntegerOperand multiply (IntegerOperand that) {
return new IntegerOperand(this.value.multiply(that.value));
}
public String toString () {
return value.toString();
}
}
public void operation (OperationType operation) {
T t1;
T t2;
if(stack.isEmpty())
{
t2= stack.pop();
t1= stack.pop();
stack.push(t1.IntegerOperand.add(t2));
}
}
最佳答案
主要问题是您没有正确调用该函数。
// You don't need the class name
//stack.push(t1.IntegerOperand.add(t2));
stack.push(t1.add(t2));
其次,检查堆栈是否为空,然后检查堆栈是否为空。但是您应该检查堆栈是否不为空:
pop
。但是由于您随后要对if (!stack.isEmpty())
进行2次调用,因此应该检查堆栈中是否至少有2个项目。if (stack.size() >= 2) {
t2 = stack.pop();
t1 = stack.pop();
stack.push(t1.add(t2));
}
关于java - Postfix Calculator Java-无法解析或不是字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53263155/