数学函数 Power from String ("2 power 3")

Math function Power from String ("2 power 3")

我必须在从 "2 power 3" 这样的字符串获取方程式时执行 pow 函数。我知道有函数 Math.pow(a, b) 并且我也可以使用 for loop 来实现这个,但问题是这两种方法都需要整数并且我在字符串中有等式。我不知道如何解析这个字符串并将两个变量分开。还有另一个问题。我的等式也可能变得有点复杂。例如它可能像 "2+3*5/5 power 2"

public class CalculationActivity extends AppCompatActivity {

    EditText editText;
    Button btnCalc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculation);
        editText=findViewById(R.id.et_regular_dep);
        btnCalc=findViewById(R.id.btnCalculate);
        btnCalc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String equation= editText.getText().toString();
                CalculateResult(equation);
            }
        });

    }

    private void CalculateResult(String equation) {
        // here to perform power function
    }
}

试试这个:

 String eq = "2 power 3";
 String no2 = eq.substring(eq.indexOf("power") + 6 , eq.length());
 String no1 = eq.substring(0,eq.indexOf("power")-1);

 Log.d("no1",no1);
 Log.d("no2",no2);
 Log.d("ans",Math.pow(Double.parseDouble(no1),Double.parseDouble(no2))+"");

另一种简单的方法

String eq = "2 power 3";
eq = eq.trim(); // if it has extra space at the start or end
String no1 = eq.split(" ")[0];
String no2 = eq.split(" ")[2];

Log.e("no1", no1);
Log.e("no2", no2);
Log.e("ans", Math.pow(Double.parseDouble(no1), Double.parseDouble(no2)) + "");