我正在考虑如何在第一次单击该按钮时显示结果。之后,我第二次单击,然后该按钮将清除结果。
示例:第一次单击,它将计算
R.id.Equal: calculate(true);
计算方法
private void calculate(boolean IsEqualClick) {
String input = getinput();
try {
if (!isEmpty()) {
if (input.contains("x")) {
input.replaceAll("x", "*");
}
}
Expression expression = new ExpressionBuilder(input).build();
double result = expression.evaluate();
if (IsEqualClick) {
inputtext.setText(String.valueOf(twoDForm.format(result)));
resulttext.setText("");
} else {
resulttext.setText(String.valueOf(twoDForm.format(result)));
}
} catch (Exception e) {
stateError = true;
isNumber = false;
}
}
我想不出如何编写代码。如果我第二次单击,它将被删除。我应该再次使用if语句进行处理吗?
答案 0 :(得分:0)
如果您已经正确编写了switch语句,并且没有经过硬编码,则无需检查isEqualClick
。
现在为您的解决方案执行以下操作:-
声明一个全局变量boolean toCalculate = true;
,此变量将检查是否需要计算或必须清除该框;
对calculate();
的功能调用
R.id.Equal: calculate();
calculate()
函数:-
private void calculate() {
if (toCalculate) {
String input = getinput();
try {
if (!isEmpty()) {
if (input.contains("x")) {
input.replaceAll("x", "*");
}
}
Expression expression = new ExpressionBuilder(input).build();
double result = expression.evaluate();
/*->Write all your code for printing the answer here<-*/
/*for eg:- result.setText(String.valueOf(twoDForm.format(result)))*/
toCalculate = false;
} catch (Exception e) {
stateError = true;
isNumber = false;
}
} else {
/*->Write all your code for clearing the answer here<-*/
/*for eg:- result.setText("")*/
toCalculate = true;
}
}
或者您可以执行以下操作,而不必像上面那样更改功能:-
R.id.Equal: if(toCalculate)
{
calculate();
toCalculate = false;
}else
{
/*->Write all your code for clearing the answer here<-*/
/*for eg:- result.setText("")*/
toCalculate = true;
}
break;