如何计算用户给出的数学表达式? [重复]

问题描述 投票:1回答:1

说,用户输入以下100 + 12-1/3使用扫描仪,我得到了输入,然后将其分割为100,+,12,-,1、3现在,我要做的是按提供的顺序计算总数。112,然后是111,然后是37,因此答案是37。

这是我当前的思考过程,但现在我仍在其余的长度和运算符上停留在如何用Java实现该过程中。

仅适用于“ 1 + 1”或“ 1/1”但是我需要的是一些变量来保存前2个整数结果,然后-,*或根据表达式的其余部分添加。

    Scanner numstr = new Scanner(System.in);
    String input = numstr.nextLine();
    String [] str = input.split(" ");
    int sum =0;
    int add =0;
    int temp;
    for (int i=0;i<str.length;i++) {
        if (i%2 >0 && str[i].equals("+"))
        {
sum = Integer.parseInt(str[i-1]) + Integer.parseInt(str[i+1]);
            //sum = add;
            System.out.println(sum);

        }
        temp =sum;

        else if (i%2 >0 && str[i].equals("-"))
        {
sum = Integer.parseInt(str[i-1]) - Integer.parseInt(str[i+1]);
            //sum = temp - Integer.parseInt(str[i+1]);
            System.out.println(sum);

        }
        //temp = sum;
        else if (i%2 >0 && str[i].equals("/"))
        {
sum = Integer.parseInt(str[i-1]) / Integer.parseInt(str[i+1]);
            System.out.println(sum);

        }
        else if (i%2 >0 && str[i].equals("*"))
        {
 sum = Integer.parseInt(str[i-1]) * Integer.parseInt(str[i+1]);
            System.out.println(sum);

        }
   else if (i%2 >0 && !str[i].equals("+")&&!str[i].equals("-")&&!str[i].equals("/")&&!str[i].equals("*"))
        {

            System.out.println("unknow operator");

        }

    }

所以1 + 2 + 5 * 30将会:3,8,240

说一个用户输入以下100 + 12-1/3,使用扫描仪,得到该输入,然后将其分割为100,+,12,-,1,/ 3现在,我要计算的是提供的订单。 112然后111 ...

java
1个回答
-1
投票

最简单的方法是读取数字,运算符和数字。然后根据运算符计算该值。

© www.soinside.com 2019 - 2024. All rights reserved.