我已经创建了一个科学计算器作为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));
}
}
答案 0 :(得分:1)
创建一个while循环,条件是运算符ArrayList中仍有条目。然后,在while循环中,放入for循环,但将其拆分为两个for循环。第一个用于寻找乘法和除法。第二个用于寻找加法和减法。这将确保您保持操作顺序。每次匹配和评估运算符时,将其从ArrayList中删除。