Хорошо, поэтому я пытаюсь сделать решатель выражения как строку, так что пользователь может ввести строку, например 2 + 4 * 5/10, и распечатает ответ, 4. У меня есть код написанный, но он не применяет порядок операций; он просто решает уравнение по порядку операторов - например, 2 + 4 * 5/10 произведет 3, что неверно. Как сделать так, чтобы сначала выполнялось умножение и деление, затем сложение и вычитание? Вот код, я прямо сейчас:Как добавить порядок операций в решатель выражения?
class Expressions
{
String E;
void SetE(String e)
{
E = e;
}
int EvalE()
{
int res = 0;
int temp = 0;
char op = '+';
for(int i=0;i<E.length();i++)
{
if(E.charAt(i)=='*'||E.charAt(i)=='/'||E.charAt(i)=='+'||E.charAt(i)=='-')
{
if(op=='*')res*=temp;
else if(op=='/')res/=temp;
else if(op=='+')res+=temp;
else res-=temp;
temp=0;
op=E.charAt(i);
}
else
{
temp = temp*10+E.charAt(i)-'0';
}
}
if(op=='*')res*=temp;
else if(op=='/')res/=temp;
else if(op=='+')res+=temp;
else res-=temp;
return res;
}
}
Разберите его в дерево выражений. – Kevin
http://stackoverflow.com/questions/1432245/java-parse-a-mathematics-expression-given-as-a-string-and-return-a-number – JNL
Остерегайтесь страшных целых делений. –