Я новичок в кодировании. Попытка написать функциюvaluPostfix на Java.
Я получаю сообщение об ошибке:
несовместимые типы: int нельзя преобразовать в Character
stack.push (eval (токен, a, b));
Это для школьного задания, преобразующего инфиксную нотацию в постфикс.
Ниже приведен мой блок кода:
private static int evalPostfix(String postfix){
char token = ' ';
int a;
int b;
Queue<Character> postfixQ = new Queue<>();
for (char i : postfix.toCharArray()) {
postfixQ.enqueue(i);
}
Stack<Character> stack = new Stack<>();
while (!postfixQ.isEmpty()){
token = postfixQ.dequeue();
if (isOperand(token)){
stack.push(token);
}
else {
a = stack.pop();
b = stack.pop();
stack.push(eval(token, a, b));
}
}
if(!stack.isEmpty()){
return stack.pop();
}
else {
System.out.println("Invalid postfix expression");
}
}
функция принимает постфиксное выражение и оценивает результат.
это моя функция eval:
private static int eval(char op, int a, int b){
int result = -1;
if (op == '+'){
return a + b;
}
else if (op == '-'){
return a - b;
}
else if (op == '*'){
return a * b;
}
else if (op == '/'){
return a / b;
}
else if (op == '^')
return (int)Math.pow(a, b);
return result;
}