[英]How can I make multiple operations work in calculator?
為了學習,我為Android制作了一個簡單的計算器,但它有很多問題。 所有數字鍵僅append
各自的數字append
到TextView
。 “等於”按鈕完成加/減/除/乘運算。 但是問題是,它一次只能執行一次,如果我將加號操作與減號混合使用,它將崩潰。 這是等號按鈕執行加法的代碼:
equals = (Button) findViewById(R.id.equals);
equals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
result.getText();
String expression = (result.getText()).toString();
if(expression.contains("+")){
String[] numbers = expression.split("\\+");
String no1 = numbers[0];
String no2 = numbers[1];
Double numb1 = Double.valueOf(no1);
Double numb2 = Double.valueOf(no2);
Double added = numb1+numb2;
theresult = String.valueOf(added);
result.setText(theresult);
}
}
});
如您在上面看到的,另一個問題出現了。 它不能處理多個+
號,我如何使它加上x個數字呢? 抱歉,我剛開始編程,不只是想讓它工作,而是想學習它如何工作,所以請盡可能解釋一下。 謝謝。
利用堆棧進行多種操作,可以使用此算法http://www.smccd.net/accounts/hasson/C++2Notes/ArithmeticParsing.html
如果它崩潰了,那么最好的辦法就是也發布logcat錯誤。
現在的問題; 您僅基於+
分隔表達式。 因此,如果添加-
則數組的第二部分將包含-
也不能轉換為double。 在這里您得到錯誤。
因此,最好的辦法是根據所有表達式(例如+
, -
, *
和/
將僅數字部分分開。 一旦所有表達式都被分離,則只有您可以將剩余的值轉換為字符串並根據相應的表達式執行操作。
您將必須為此編寫一些代碼。
現在可以幫助您的資源。 (第二種是較短的方法)
這最適合用作評論,我決定將其作為答案,以免丟失,因為已經有了一些答案。
看看這個問題 ; 接受的答案可能不是您想要的,因為您想學習,但是boan可能會提供您所需的答案。 我不在這里復制它,因為它已經在SO上了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.