Avaliador de Expressões Posfixas

Bom Dia !
Realizei um código de Pilha baseada em alocação sequencial especificamente para números reais (float).
E agora preciso entregar uma atividade que se baseia em construir um avaliador de expressões na forma posfixa em java.
Quem poder me ajudar estarei grato.

package teste;

public class aqui {

float elementos[];
int topo;

public aqui() {
    elementos = new float[10];
    topo = - 1;
}

public void push(float e) {
    if (isFull()) {
        throw new RuntimeException("StackOverflow");
    }
    topo++;
    elementos[topo] = e;

}

public float pop() {
    if (isEmpty()) {
        throw new RuntimeException("Stack Empty");
    }
    float e;
    e = elementos[topo];
    topo--;
    return e;

}

public float top() {
    if (isEmpty()) {
        throw new RuntimeException("Empty Stack");
    }
    return elementos[topo];

}

public boolean isEmpty() {
    return (topo == -1);

}

public boolean isFull() {
    return (topo == elementos.length - 1);

}

public float size() {
    float e;
    e = elementos[topo];
    topo--;
    return e;
}
}

package teste;

import static java.lang.System.exit;
import java.util.Scanner;

public class aquimain {

    public static void main(String[] args) {
        aqui p = new aqui();
        Scanner scanner = new Scanner(System.in);
        float num = 0;
        int op = 0;

        while (true) {
            System.out.println("(1) para empilhar");
            System.out.println("(2) para desempilhar");
            System.out.println("(3) para acessar o topo");
            System.out.println("(4) para mostrar os elementos da pilha");
            op = scanner.nextInt();

            switch (op) {
                case 1:
                    System.out.println("Digite um numero: ");
                    num = scanner.nextFloat();
                    p.push(num);
                    break;
                case 2:
                    while (!p.isEmpty()) {
                        float elemento;
                        elemento = p.pop();
                        System.out.println("Desempilhando: " + elemento);
                    }
                    break;
                case 3:                    
                        float elemento;
                        elemento = p.top();
                        System.out.println("Topo: " + elemento);
                    
                    break;
                case 4:
                    while (!p.isEmpty()) {
                        
                        elemento = p.pop();
                        System.out.println("[" + elemento+ "]");
                    }
                    break;
            }
        }
}

Cara, como é que tu espera aprender se não perguntar?

Não deveria se envergonhar de perguntar.
Deveria se envergonhar de não perguntar.
:wink: