问题描述
案例caret
不起作用。
可能我的逻辑不对。
当我在num1
给出值并使用幂符号时,答案与我给出num2
值是一样的。
case R.id.caret:
entry = "^";
if(num1 == 0) {
num1 = Integer.parseInt(txt1.getText().toString());
txt1.setText("");
}
else if (num2 !=0){
num2 = 0;
txt1.setText("");
}
break;
case R.id.equal:
if (!entry.equals(null)) {
if (num2 != 0) {
} else if (entry.equals("/")) {
txt1.setText("");
/* op1 = op1 / op2;*/
txt1.setText("Result : " + Integer.toString(num1));
}
else if (entry.equals("^")){
num2 = Integer.parseInt(txt1.getText().toString());
txt1.setText("");
}
else {
Log.e("Values", num1+"=="+num2);
Math.pow(num1, num2);
txt1.setText("Result" + Integer.toString(num1));
}
} else {
operation();
}
}
break;
}
}
}
1楼
您不会将pow
的结果返回到任何地方。
您需要将值返回给变量。
这里到num1
。
让它像下面一样。
它会起作用。
else {
Log.e("Values", num1+"=="+num2);
double result=Math.pow(num1, num2);
txt1.setText("Result: " + result +"");
}
编辑:
pow
函数的参数应该是双pow
值。
如果R.id.equal
执行以下操作
case R.id.equal:
if (!entry.equals(null)) {
if (num2 != 0 && entry.equals("/")) {
txt1.setText("");
/* op1 = op1 / op2;*/
txt1.setText("Result : " + Integer.toString(num1));
}
else if (num2 != 0 && entry.equals("^")){
Log.e("Values", num1+"=="+num2);
double result=Math.pow(num1, num2);
txt1.setText("Result: " + result +"");
}
}
else {
operation();
}
break;