3 回答

TA貢獻1876條經驗 獲得超5個贊
對運算符使用 switch case,假設以下是字段;
public static final int plus = 1
public static final int minus= 2
public static final int divide= 3
public static final int multiply= 4
和一個保存當前操作的變量,
int currentOperation;
當單擊某個操作員按鈕時,將“currentOperation”分配給偵聽器中的該操作
sum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(result.getText()==null)
{
result.setText("");
}
else
{
num1 = Float.parseFloat(result.getText().toString());
res=res+num1;
result.setText(null);
num1=0;
currentOperation = plus //plus is public static final int plus = 1
}
}
});
并使用 switch 語句更新 '='listener,
equal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1 = Float.parseFloat(result.getText().toString());
switch(currentOperation){
case plus:
res=res+num1;
break;
case minus:
res=res-num1;
break;
case divide:
res=res/num1;
break;
case multiply:
res=res*num1;
break;
}
result.setText(""+ res);
num1=0;
}
});

TA貢獻1776條經驗 獲得超12個贊
您沒有讀取第二個數字(運算符右側)的值。= 按鈕的 OnClickListener 除了顯示 res 之外什么都不做。它不適用于運算符的右手,即第二個數字
例如 1 + 2 = 3
Step 1 按1 Step 2 按+,程序會得到算符的左邊,加載到num1,加到res。Step 3 按2 Step 4 按=,程序會顯示res
如果您想實時查看程序正在執行的操作,請嘗試使用“調試”工具,您可以在其中逐行逐步執行程序并查看哪些變量被設置為額外的變量。

TA貢獻1794條經驗 獲得超8個贊
您還應該從用戶那里獲取第二個值,并分別在每個運算符函數中進行計算。
您的所有運算符功能都存在邏輯錯誤。每當調用特定函數時,您都應該在所有運算符中添加此行。
result.setText(num1 - num2 + "");
result.setText(num1 + num2 + "");
等等?。?!
您通過為操作創建匿名函數而使用了錯誤的技術。請您切換嵌套的 if-else 語句。
添加回答
舉報