我在android上制作了一个计算器。我得到的结果只有两个数字(1 + 1),但我希望能够一次做多个计算,而不是每次我需要一个新的答案(1 + 1-2)时输入。
像这样:2 + 2(按下新操作员)4 + 3(等于按下)7
但我不确定如何在我的代码上实现这一点。
这是每个操作员的按钮代码:
btnPlus.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
perform();
operation = "+";
}
}); // end btnPlus
这是我的计算方法:
private void calculate() {
if (operation == null) {
numberInput.setText(null);
} else if (operation.equals("+")){
numResult = (secondNum + firstNum);
numberInput.setText(String.valueOf(numResult));
} else if (operation.equals("-")) {
numResult = (secondNum - firstNum);
numberInput.setText(String.valueOf(numResult));
} else if (operation.equals("/")) {
numResult = (secondNum / firstNum);
numberInput.setText(String.valueOf(numResult));
} else if (operation.equals("*")) {
numResult = (secondNum * firstNum);
numberInput.setText(String.valueOf(numResult));
} // end if statement
}
此外,如果需要,请执行:
private void perform() {
str = "";
secondNum = firstNum;
}
答案 0 :(得分:0)
根据您当前的代码解决问题的一种快捷方法是使用textChangeListener / TextWatcher(假设您有 EditText 或 TextView )来检测每次运算符输入然后调用操作功能。它看起来像这样。
myEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// if 2nd operator is detected
// call calculate
// append 2nd operator
}
});
答案 1 :(得分:0)
您可以按照我在评论中的建议进行操作,只需为每个操作制作一个列表,然后在每次当前数据发生变化时进行计算(可能会有不同的方式来解决问题"如果有的话结果是最终的,具体取决于您如何从应用程序中删除。
这样的东西就像我要做的那样,然后每次按下按钮都会调用逻辑来添加输入,然后计算并写出来
<ScrollViewer b:TopMouseScrollPriorityBehavior.TopMouseScrollPriority="True" VerticalScrollBarVisibility="Auto" Margin="5" PanningMode="VerticalFirst">
<DataGrid ScrollViewer.PanningMode="None" ItemsSource="{Binding Items}" />
</ScrollViewer>