Postfix Calculator Java - не может разрешить или не является полем - PullRequest
0 голосов
/ 12 ноября 2018

Я сталкиваюсь с этой ошибкой в ​​постфиксном калькуляторе: integerOperand не может быть разрешен или не является полем. Ниже я показал основной код и код из файла класса IntegerOperand. Как я могу это исправить? Я пытаюсь вызвать функцию добавления из класса IntegerOperand.

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));

        }
    }

1 Ответ

0 голосов
/ 12 ноября 2018

Основная проблема в том, что вы неправильно вызываете функцию.

// You don't need the class name
//stack.push(t1.IntegerOperand.add(t2));
stack.push(t1.add(t2));

Во-вторых, вы проверяете, пустой ли стек, затем, если он есть, вы пытаетесь pop из него. Но вы должны проверить, является ли стек не пустым: if (!stack.isEmpty()). Но так как вы затем делаете 2 вызова на pop, вы должны вместо этого проверить, есть ли в стеке как минимум 2 элемента.

if (stack.size() >= 2) {   
    t2 = stack.pop();
    t1 = stack.pop();
    stack.push(t1.add(t2));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...