Crie um programa em Java que permita realizar operações matemáticas na notação pós-fixada, com o auxílio de pilhas para realizar estas operações.
A seguinte expressão: (1-2) * (4+5)
na notação pós-fixada é igual a: 1 2 - 4 5 + *
Para realizar o cálculo, cada operando é empilhado em uma pilha de valores. Quando se encontra um operador, desempilha0se o número apropriado de operandos, realizando-se a operação devida e empilha0se o resultado.
Desse modo, na expressão citada, são empilhados os valores 1 e 2.
Quando aparece o operador -, 1 e 2 são desempilhados, e o resultado da operação, no caso -1 = (1-2), é colocado no topo da pilha.
A seguir, 4 e 5 são empilhados. O operador seguinte, +, desempilha o 4 e o 5 e empilha o resultado da soma = 9.
Nesse momento estão na pilha os dois resultados parciais, -1 na base e 9 no topo. O operador *, então, desempilha os dois e coloca -9 (= -1 * 9) no topo da pilha
O que já fiz…
`public class CalculoMatematico {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
StringBuffer numBuffer = new StringBuffer();
Stack<Float> stack = new Stack<>();
List<String> operadores = new ArrayList<String>();
System.out.println("input:" + input);
System.out.println("numBuffer: " + numBuffer);
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
System.out.println("c: " + c);
if (Character.isDigit(c) || c == ',' || c == '.') {
numBuffer.append(c);
System.out.println("numBuffer: " + numBuffer);
} else {
if (numBuffer.length() > 0) {
try {
float numero = Float.parseFloat(numBuffer.toString());
System.out.println("numero: " + numero);
stack.push(numero);
} catch (NumberFormatException nfe) {
System.out.println("ERRO de sintaxe!");
return;
} finally {
numBuffer = new StringBuffer();
}
}
if (c == '/' || c == '*' || c == '-' || c == '+') {
String recebeOperador = String.valueOf(c);
operadores.add(recebeOperador);
}
}
}
System.out.println("Numeros na pilha: " + stack);
System.out.println("Operadores: " + operadores);
scanner.close();
}
}`
Não sei como fazer o passo de fazer o cálculo e desempilhar… Alguém me ajuda?