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

标签 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));
        }

    }

最佳答案

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

关于java - 科学计算器产生错误结果 :java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26831167/

相关文章:

java - @BeforeSuite 和 @AfterSuite 必须是静态的吗?

android - 如何从应用程序显示 "Voice Input and Output"设置页面?

javascript - 如何找到两个抽象节点之间的路径

android - 编辑 Activity 的上下文操作栏

python - 如何使用 Python 估计指数截断幂律的参数?

python - Numpy:将数组的每个元素与所有其他元素进行比较(± 常数)

Java 服务器和客户端/RMI 或 Socket?

java - 从网页中获取文本的背景颜色

java - 从基于 JDK 1.4 构建的 java 应用程序连接到 Oracle 数据库时可以进行操作系统身份验证吗?

android - 如何在 MVP 中连接 Adapter 和 Presenter?