[JAVA] priorité des opérations - code

Fermé
jasinskimathiiiiieu - 25 nov. 2010 à 18:36
Bonjour,
[exercice scolaire]

en faite je suis en train de programmé un convertisseur de notation normal en notation polonaise inversé.

A la ligne X j'aimerais prendre en compte la priorité des opérateurs mais je ne sais pas comment m'y prendre, en créant différent niveau mais comment ???
import java.util.*;
import javax.swing.*;
/**
 * Décrivez votre classe Operatorus ici.
 * 
 * @author (Mateus) 
 * @version (15/11/10 // 15h26)
 */
public class Operatorus
{
    ArrayList tokens;//Initialisation de la classe Arraylist
    private static final String chiffre = "0123456789.";
    private static final String delimitateur = "()";
    private static final String operateur = "+-*/";
    
    

    public Operatorus(String calcul)
    {
        int taille = calcul.length();
        tokens = new ArrayList();// on crée l'ArrayList appellé Tokens
        
        for(int i=0;i<taille;i++)
        {
            if (operateur.indexOf(calcul.charAt(i))>=0 || delimitateur.indexOf(calcul.charAt(i))>=0)
            {
                tokens.add(calcul.charAt(i));
            }
            
            else if (chiffre.indexOf(calcul.charAt(i))>=0)
            {
                String s = "";
                while(i<calcul.length() && chiffre.indexOf(calcul.charAt(i))>=0)// le 'i' doit etre plus petit que la taille car on met un i++ à la fin. 
                {
                    s = s + calcul.charAt(i);
                    i++;// passe au caractère suivant
                }
                tokens.add(new Double(Double.parseDouble(s)));
                i--;//Car on est déjà au caract suivant !
            }
            
        }
    }
    
    public void convertorus()
    {
        String s = "";
        Pile p = new Pile();
        for(int i=0;i<tokens.size();i++)
        {
            if(tokens.get(i) instanceof Double)
            {
                String t = tokens.get(i).toString();
                s = s + t + " ";
            }
            
            else if(tokens.get(i) == "(" )
            {
                p.empiler(tokens.get(i));
            }
            
            do{
                if(p.haut == null)
                {
                    p.empiler(tokens.get(i));
                }
                
                else if(p.haut == "(")
                {
                    p.empiler(tokens.get(i));
                }
                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                else if(p.haut == ")")
                {
                    while(p.haut =! "(")
                    {
                        p.depiler(tokens.get(i));
                        i++;
                    }
                    i--;
                }
            }while(tokens.get(i) instanceof operateur);
        }
        
        System.out.println(s);
    }
}



merci

A voir également: