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条经验 获得超7个赞
您还应该从用户那里获取第二个值,并分别在每个运算符函数中进行计算。
您的所有运算符功能都存在逻辑错误。每当调用特定函数时,您都应该在所有运算符中添加此行。
result.setText(num1 - num2 + "");
result.setText(num1 + num2 + "");
等等!!!
您通过为操作创建匿名函数而使用了错误的技术。请您切换嵌套的 if-else 语句。
添加回答
举报