这不是一个重复的问题,因为我首先也想知道如何实现操作顺序,我也看过类似的线程,但由于它们根本不适合我,因此仍然无法找到解决此问题的方法。
问题:我需要采用以字符串形式传递的数学表达式并加以解决。该表达式可能包含多个操作,并且操作顺序也需要起作用。
示例:输入:3+5*45/(22+5)
,然后输出应为该表达式的答案
这是我到目前为止提出的代码:
private void equal(){
String fullEquation = lblTempOut.getText() + Double.valueOf(txfScreen.getText());
fullEquation = fullEquation.replaceAll("\\s","");
String[] splitTemp = (fullEquation.split("(?=[/*+-])|(?<=[/*+-])"));
double ans = 0;
for(int i = 0; i<splitTemp.length; i = i+3){
double a = Double.valueOf(splitTemp[i]);
String op = splitTemp[i+1];
double b = Double.valueOf(splitTemp[i+2]);
if(op.equals("+")){
ans = ans +a + b;
}
else if(op.equals("-")){
ans= ans +a - b;
}
else if(op.equals("*")){
ans= ans +a * b;
}
else if(op.equals("/")){
ans= ans + a / b;
}
}
}
问题出在循环中,以及如何从数组中获取值(和运算符),正如您可能会告诉我的那样,我甚至还没有按运算的顺序开始:/。但是由于我已经坐了几个小时了,所以我真的很头疼,而且我的大脑基本上停止了正常运作。因此,我为获得的所有帮助感到非常高兴!非常感谢你!