我创建了一个科学计算器作为 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/