解决通过字符串传递的数学表达式。 Java

时间:2019-05-04 19:16:29

标签: java math expression

这不是一个重复的问题,因为我首先也想知道如何实现操作顺序,我也看过类似的线程,但由于它们根本不适合我,因此仍然无法找到解决此问题的方法。

问题:我需要采用以字符串形式传递的数学表达式并加以解决。该表达式可能包含多个操作,并且操作顺序也需要起作用。 示例:输入: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;
                }
            }
    }

问题出在循环中,以及如何从数组中获取值(和运算符),正如您可能会告诉我的那样,我甚至还没有按运算的顺序开始:/。但是由于我已经坐了几个小时了,所以我真的很头疼,而且我的大脑基本上停止了正常运作。因此,我为获得的所有帮助感到非常高兴!非常感谢你!

0 个答案:

没有答案