我在一个简单的计算器应用程序上工作,该应用程序没有像Google计算器这样的表达式。而是在按下操作按钮时将结果存储在操作数中,因此它不遵循BODMAS优先级规则。就像我执行2 + 2/2一样,我得到4作为结果,而结果应为3,因为首先执行除法 有没有一种方法可以将输入作为一个整体表达,然后对其进行集体评估? 我可以使用Java中包含的任何预定义类吗?
运算符和计算执行功能的onClickListeners的代码为:
View.OnClickListener opListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
Button b = (Button) view;
String op = b.getText().toString();
String value = newNumber.getText().toString();
try {
Double doubleValue = Double.valueOf(value);
performOperation(doubleValue, op);
} catch (NumberFormatException e) {
newNumber.setText("");
}
pendingOperation = op;
displayOperation.setText(pendingOperation);
}
};
private void performOperation(Double value, String operation) {
if (operand1 == null) {
operand1 = value;
} else {
if (pendingOperation.equals("=")) {
pendingOperation = operation;
}
switch (pendingOperation) {
case "=":
operand1 = value;
break;
case "/":
if (value == 0) {
operand1 = 0.0;
Toast.makeText(this,"Cannot Divide By Zero, Resetting value to zero",Toast.LENGTH_LONG).show();
} else {
operand1 /= value;
}
break;
case "*":
operand1 *= value;
break;
case "+":
operand1 += value;
break;
case "-":
operand1 -= value;
break;
}
}
result.setText(operand1.toString());
newNumber.setText("");
}