作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,所以我正在尝试制作一个字符串表达式求解器,以便用户可以输入一个字符串,例如 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;
}
}
最佳答案
将表达式拆分为两个更简单的表达式,然后使用递归。
您必须严格按照此顺序执行以下步骤,否则会弄乱操作顺序。
示例:“6 - 5 - 4 + 3 * -2”
关于java - 如何向表达式求解器添加运算顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851036/
我是一名优秀的程序员,十分优秀!