Какие аргументы использовать в Math.pow()?

Делаю калькулятор используя библиотеку js rhino,но не знаю какие аргументы мне использовать для usage = usage.replaceAll("Знак квадрата",Math.pow(?,?)) usage = usage.replaceAll("Знак корня",Math.sqrt(?)). Помогите пожалуйста!

Button btn0; Button btn1; Button btn2; Button btn3; Button btn4; Button btn5; Button btn6; Button btn7; Button btn8; Button btn9; Button btnPlus; Button btnMinus; Button btnMultiply; Button btnDivision; Button btnEqual; Button btnClear; Button btnDot; Button btnKvadrat; Button btnKoren;Button btnPercent;
TextView CalcIn,CalcOut; String usage;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.fragment_tab4, container, false);

   btn0 =  view.findViewById(R.id.btn0);
   btn1 =  view.findViewById(R.id.btn1);
   btn2 =  view.findViewById(R.id.btn2);
   btn3 =  view.findViewById(R.id.btn3);
   btn4 =  view.findViewById(R.id.btn4);
   btn5 =  view.findViewById(R.id.btn5);
   btn6 =  view.findViewById(R.id.btn6);
   btn7 =  view.findViewById(R.id.btn7);
   btn8 =  view.findViewById(R.id.btn8);
   btn9 =  view.findViewById(R.id.btn9);


   btnClear = view.findViewById(R.id.btnClear);
   btnPlus = view.findViewById(R.id.btnPlus);
   btnMinus = view.findViewById(R.id.btnMinus);
   btnMultiply = view.findViewById(R.id.btnMultiply);
   btnDivision = view.findViewById(R.id.btnDivision);
   btnKoren = view.findViewById(R.id.btnKoren);
   btnKvadrat = view.findViewById(R.id.btnKvadrat);
   btnEqual = view.findViewById(R.id.btnEqual);
   btnDot = view.findViewById(R.id.btnDot);
   btnPercent = view.findViewById(R.id.btnPercent);

   CalcIn = view.findViewById(R.id.CalcIn);
   CalcOut = view.findViewById(R.id.CalcOut);


   btnClear.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           CalcIn.setText("");
           CalcOut.setText("");
       }
   }) ;


   btn0.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           usage = CalcIn.getText().toString();
           CalcIn.setText(usage + "0");
       }
   });
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "1");
        }
    });
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "2");
        }
    });
    btn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "3");
        }
    });
    btn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "4");
        }
    });
    btn5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "5");
        }
    });
    btn6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "6");
        }
    });
    btn7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "7");
        }
    });
    btn8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "8");
        }
    });
    btn9.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "9");
        }
    });
    btnPlus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "+");
        }
    });
    btnMinus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "-");
        }
    });
    btnMultiply.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "×");
        }
    });
    btnDivision.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "÷");
        }
    });
    btnDot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + ".");
        }
    });
    btnPercent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "%");
        }
    });

    btnEqual.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            usage = usage.replaceAll("×","*");
            usage = usage.replaceAll("%","/100");
            usage = usage.replaceAll("÷","/");


            Context rhino = Context.enter();

            rhino.setOptimizationLevel(-1);

            String finalResult = "";

            try {
                Scriptable scriptable = rhino.initStandardObjects();
                finalResult = rhino.evaluateString(scriptable,usage,"javascript",1,null).toString();
            }catch (Exception e){
                finalResult = "0";
            }
            CalcOut.setText(finalResult);
        }
    });
    btnKoren.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "√");
        }
    });
    btnKvadrat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            usage = CalcIn.getText().toString();
            CalcIn.setText(usage + "²");
        }
    });






    return view;


}

Ответы (1 шт):

Автор решения: Free Login

Так как вам требуется обернуть число, возводимое в степень в Math.pow, вам нужно знать в какой позиции был последний не численный символ перед знаком квадрата, т.е. на начало числа. Далее перед ним вставить "Math.pow(" а знак квадрата заменить на ",2)". Знак корня нужно заменить на "Math.sqrt(" и перед первым не числовым символом после данного знака вставить ")". Для решения этой задачи можно воспользоваться регулярными выражениями:

usage = usage.replace(/(\d+)²/g, "Math.pow($1, 2)"); 
usage = usage.replace(/√(\d+)/g, "Math.sqrt($1)"); 
→ Ссылка