ecco il metodo espressioneInfissa:

codice:
//Class per definire un'espressione Infissa
import java.io.*;
class espressioneInfissa implements Serializable
{
    private String espressione;
    private Pila Formula;
    private Pila Operatori;
    private Pila Operandi;
        
    //------------------------------------------------
    //Costruttore dell'espressione
    public espressioneInfissa(String _espressione)
    {
        espressione = _espressione;
        Formula = new Pila();
        Operatori = new Pila();
        Operandi = new Pila();
    }
    //------------------------------------------------
    
    //Metodo che restituisce la Stringa che costituisce l'espressione
    public String getEspressione()
    {
        return espressione;
    }
    
    //Metodo che restituisce il risultato dell'espressione, questo richiama il metodo tokenizza e il metodo svolgi operazione
    public int risultato()
    {
        tokenizza();
        while(!Formula.isEmpty())
        {
            String tokenCorrente = (String)(Formula.pop());//il token corrente è il segmento corrente dell'espressione
            if (tokenCorrente.equals("+") || tokenCorrente.equals("*") || tokenCorrente.equals("-") || tokenCorrente.equals("/"))  // se il token è un operatore
                Operatori.push(tokenCorrente);//inserisci il token nella pila degli operatori
            else//altrimenti
                if (tokenCorrente.equals( ")" )) // se il token è la parentesi chiusa devo fare una operazione aritmetica
                    svolgiOperazione();//e richiamo il metodo svolgiOperazione
                else // altrimenti il token è un operando
                    Operandi.push(tokenCorrente);//e lo aggiungo nella pila degli operandi
            /*
            System.out.println("TRACCIA");
            System.out.println("formula"+Formula);
            System.out.println("operatori"+Operatori);
            System.out.println("operandi"+Operandi);
            */
        }
        
        int risultato=Integer.parseInt((String)(Operandi.pop()));
        if (Operandi.isEmpty())//se nella pila degli operandi non ci sono più operandi
            return risultato;//restituisce il risultato
        else
        {
            System.out.println("espressione non ben formata");
            return -1;
        }
    }
    
    //Questo metodo viene richiamato dal metodo risultato, man mano che trova le ')', ed esegue
    //le operazioni tra gli operandi richiesti dall'operatore, se si effettua una divisione per zero
    //lancia l'eccezione aritmetica
    public void svolgiOperazione()
    {
        int op2=Integer.parseInt((String)(Operandi.pop()));
        int op1=Integer.parseInt((String)(Operandi.pop()));
        String operatore = (String)(Operatori.pop());
        int risultato = 0;
        // vede che tipo di operazione deve eseguire in base all'operatore che viene trovato in cima alla pila
        if (operatore.equals("+")) 
            risultato = op1+op2;
        else 
            if(operatore.equals("*"))
                risultato = op1*op2;
            else
                if(operatore.equals("-"))
                    risultato = op1-op2;
                else
                {
                    try
                    {
                        risultato = op1/op2;
                    }
                    catch(ArithmeticException e)//se non puo' eseguire operazioni restituisce un messaggio di errore(eccezione)
                    {
                        System.out.println ("Si è verificato l'errore "+e);
                    }
                }
        
        Operandi.push(""+risultato);//altrimenti prende il risultato e lo inserisce nella pila degli operandi
    }
    
    //Questo metodo suddivide la stringa dell'espressione in 3 pile, contenenti la formula dell'espressione
    //per intero escludendo le '(', una pila contiene gli operatori ed infine l'ultima contiene gli operandi
    public void tokenizza()
    {
        int cont = espressione.length()-1;
        char corrente;
        String temp = "";
        while (cont>=0)
        {
            corrente = espressione.charAt(cont);
            if(corrente == ' ')
                cont--;
            else
                if(corrente == '(')
                {
                    if(!temp.equals(""))
                    {
                        Formula.push(temp);
                        temp="";
                    }
                    cont--;
                }
                else
                    if((corrente == ')') || (corrente == '+') || (corrente == '*') || (corrente == '-') || (corrente == '/'))
                    {
                        if(temp.equals(""))
                        {
                            temp += corrente;
                            Formula.push(temp);
                            temp = "";
                            cont--;
                        }
                        else
                        {
                            Formula.push(temp);
                            temp = "";
                            temp += corrente;
                            Formula.push(temp);
                            temp = ""; // svuoto t
                            cont--;
                        }
                    }
                    else
                    {
                        temp = corrente + temp;
                        cont --;
                    }
        }
    }
}
spero che adesso mi possiate aiutare..
GRAZIE