我正在使用sqrt和pow选项构建基本的计算器应用程序。 我想在我的应用程序中添加pow方法。我可以简单地按照我的方法进行操作,但它要求我使用两个字符串。我需要通过仅使用一个String来解决此问题。所以用户可以输入数字4和POW结果是16岁。
github代码:https://github.com/adnxy/CalculatorAt
使用两个字符串进行操作的方法:
private double operate(String a, String b, String op) {
switch (op) {
case "+":
return Double.valueOf(a) + Double.valueOf(b);
case "-":
return Double.valueOf(a) - Double.valueOf(b);
case "x":
return Double.valueOf(a) * Double.valueOf(b);
// case "p":
// return Double.parseDouble(a) * Double.parseDouble(a);
case "s":
return Math.sqrt(Double.valueOf(a));
case "÷":
try {
return Double.valueOf(a) / Double.valueOf(b);
} catch (Exception e) {
Log.d("Calc", e.getMessage());
}
default:
return -1;
}
}
我已经制作了两个方法:onClickPow和getResultPow。 当我点击App里面的Pow时,我的方法getResultPow无效。有人用getResultPow帮助我吗?
public void onClickPow(View v) {
if (display == "") return;
if (!getResultPow("String a")) return;
_screen.setText(display + "\n" + String.valueOf(result));
}
private boolean getResultPow(String a) {
//1.st case, all blank
if (display == " " && currentOperator == " " && result == " ") return false;
//2.nd case, 1 number entered
if (currentOperator == "") return false;
if (result == " ") return false;
if (display != " ") {
result = String.valueOf(Double.parseDouble(a) * Double.parseDouble(a));
//_screen.setText(display + "\n" + String.valueOf(result));
updateScreen();
return true;
}
//3.rd case, two numbers entered, they need to call + and then pow
if (result == " ") return false;
if (display != " " && currentOperator != " ") {
result = String.valueOf(Double.parseDouble(a) + Double.parseDouble(a));
result = String.valueOf(Double.parseDouble(a) * Double.parseDouble(a));
//_screen.setText(display + "\n" + String.valueOf(result));
updateScreen();
return true;
}
if (currentOperator == "") return false;
String[] operation = display.split(Pattern.quote(currentOperator));
if (operation.length < 2) return false;
result = String.valueOf(Double.parseDouble(a) * Double.parseDouble(a));
return true;
//return onClickPow();
}
答案 0 :(得分:0)
如果我收到您的问题,您只需要使用相同的值两次,例如:
input = Double.valueOf(tvNum.getText().toString());//Example value: 2
input2= Double.valueOf(tvNum.getText().toString());//Example value: 2
Double result = Math.pow(input,input2);//so this should do 2*2 = 4
答案 1 :(得分:-1)
使用OOP中的OverLoading,您可以创建具有相同名称的多个方法(参数的数量可以不同)。请参阅此文章:What is method overloading?