public static int Priorite(String sc)
{
int P = 0;
switch (sc.charAt(0))
{
case '(':
case ')': P = 0; break;
case '+':
case '-': P = 2; break;
case '*':
case '/': P = 3;
}
return P;
}
public String Postfixée()
{
boolean stop;
String r = "";
int i = 0;
while (i < ch.length())
{
if (Extraire(i, ch).equals("("))
{
try
{
stop = false;
while (stop)
{
if (Priorite((String)p.sommet()) >= Priorite(Extraire(i, ch)))
{
String var = (String)p.sommet();
p.depiler();
r = r + " " + var;
if (p.estVide())
stop = true;
}
}
p.empiler(Extraire(i, ch));
}
catch (PileException e) { }
}
else if (Opérateur(Extraire(i,ch)))
{
try
{
p.empiler(Extraire(i, ch));
}
catch (PileException e) { }
}
else if (this.Extraire(i, ch).equals(")"))
{
try
{
while (!p.sommet().equals("("))
{
String v = (String)p.sommet();
if (!v.equals("("))
{
r = r + " " + v;
p.depiler();
}
}
}
catch (PileException e) { }
try
{
p.depiler();
}
catch (PileException e) { }
}
//else r = this.Extraire(i, ch) + " " + r;
else r = r + this.Extraire(i, ch) + " ";
i += this.Extraire(i, ch).length() + 1;
}
while (!p.estVide())
{
try
{
String v = (String)p.sommet();
r = r + v + " ";
p.depiler();
}
catch (PileException e) { }
}
return r.substring(0, r.length() - 1);
}
}
j utilise pour faire cette conversion une pile et chaine String qui recoit les operateur selon leur priorité et les operande directement.
si quelqu'un voit ou mon probleme se situe, son aide serait du plus grand secours.
Merci pour avoir pris le temps de lire et merci d'avance pour votre aide.
bonnne journée.
A voir également:
Conversion d'une expression infixée en une expression postfixée (Probleme avec l