Математическая функция Power from String ("2 power 3") - PullRequest
0 голосов
/ 06 ноября 2018

Я должен выполнить функцию Pow при получении уравнения из строки, как "2 power 3". Я знаю, что есть функция 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
    }
}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

еще один простой способ сделать это

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)) + "");
0 голосов
/ 06 ноября 2018

Попробуйте это:

 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))+"");
...