科学计算器产生错误的结果:java

时间:2014-11-09 17:43:30

标签: java android scientific-computing

我已经创建了一个科学计算器作为Android应用程序。 我在计算变量时遇到问题。 我的问题是你在许多科学计算器中看到用户是否输入了这样的数据 45 + 54 * 2计算器首先计算乘法而不是加法和减法。 但是我的计算器只是增加45和54,而不是乘以2得到结果。 我该如何解决这个问题。 请检查下面的代码以了解我的问题。

List<Double> numbers = new ArrayList<>();
List<Character> operators = new ArrayList<>();
/*the above two are arraylists which input data from user*/
..............
/*when user press = button the below code runs*/
void result() {
        numbers.add(currentnum);
        if (checketfield == 0) {
            et1.setText(currentcalc.getText());
        } else {
            et1.setText("");
        }

        for (int i = 0; i < handler; i++) {
            switch (operators.get(i)) {
            case '+':
                if (i < 1) {
                    total3 = numbers.get(i);
                }
                total3 += numbers.get(i + 1);
                break;
            case '-':
                if (i < 1) {
                    total3 = numbers.get(i);
                }
                total3 -= numbers.get(i + 1);
                break;
            case '*':
                if (i < 1) {
                    total3 = numbers.get(i);
                }
                total3 *= numbers.get(i + 1);
                break;
            case '/':
                if (i < 1) {
                    total3 = numbers.get(i);
                }
                total3 /= numbers.get(i + 1);
                break;

            }
            et1.setText(Double.toString(total3));
        }

    }

1 个答案:

答案 0 :(得分:1)

创建一个while循环,条件是运算符ArrayList中仍有条目。然后,在while循环中,放入for循环,但将其拆分为两个for循环。第一个用于寻找乘法和除法。第二个用于寻找加法和减法。这将确保您保持操作顺序。每次匹配和评估运算符时,将其从ArrayList中删除。