2017-03-28 146 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 
}