Основная проблема в том, что вы неправильно вызываете функцию.
// 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));
}