使用计算器的运行总计

时间:2017-03-28 23:59:09

标签: java android calculator running-total

我在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;
}

2 个答案:

答案 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>