2017-03-28 185 views
0

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

的快速方法解决你的问题给你当前的代码是使用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 
    } 

});

0

你可以做我的意见建议,并很快让每一个操作的列表,然后每一次计算它的当前数据的变化(有可能是difffrent方式“知道”如果一些结果是最终这取决于你如何可以从应用程序中删除。

这样的事情是什么,我会怎么做,然后只需每次按下按钮调用逻辑将输入,然后计算它,它写出来

public class Calc { 

    private List<String> inputs = new ArrayList<>(); 

    public String calculate(List<String> input){ 
     String result = ""; 
     for(String current : input){ 
      switch (current) { 
       case "(": 
        // do stuff 
       case "+": 
        //do stuff 
       default: 
        // do stuff 
      } 
     } 
     return result; 
    } 

    btnPlus.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // add to list, and call calculate 
     } 
    }); // end btnPlus 
}