Какие аргументы использовать в 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)");