在计算器app里面的Pow方法

时间:2016-06-24 08:26:27

标签: android

我正在使用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();
}

2 个答案:

答案 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?