Как избежать числового выражения в android java ?
Я создаю приложение-Калькулятор на android с использованием java,я не хочу использовать тонны операторов if/else для вычисления выражений. Мне было интересно ,есть ли у нас что-то вроде функции Eval (), как и в Javascript для оценки выражения.
У меня есть метод GetResult (), в котором я хотел бы вычислить числовое выражение или вычислить числовое выражение.
Калькулятор кода активности :
package com.deepesh.calculatorx; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class Cal_page extends AppCompatActivity { TextView displayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cal_page); displayer=findViewById(R.id.displayer); } public void Addone(View view) { displayer.append("1"); } public void Addtwo(View view) { displayer.append("2"); } public void Addthree(View view) { displayer.append("3"); } public void Addfour(View view) { displayer.append("4"); } public void Addfive(View view) { displayer.append("5"); } public void Addsix(View view) { displayer.append("6"); } public void Addseven(View view) { displayer.append("7"); } public void Addeight(View view) { displayer.append("8"); } public void Addnine(View view) { displayer.append("9"); } public void Addzero(View view) { displayer.append("0"); } public void Addplus(View view) { displayer.append("+"); } public void Addsubtract(View view) { displayer.append("-"); } public void Addmultiply(View view) { displayer.append("*"); } public void AddDivide(View view) { displayer.append("/"); } public void AddDot(View view) { displayer.append("."); } public void clearALL(View view){ displayer.setText(" "); } public void GetResult(View view) { //user presses Equal sign //evauluate the numeric expression and get result } public void clearLastchar(View view) { CharSequence numbers = displayer.getText(); String Snumbers = numbers.toString(); String Nnumbers = Snumbers.substring(0,Snumbers.length()-1); displayer.setText(Nnumbers); } }
Что я уже пробовал:
Я пробовал использовать некоторые внешние Парсеры, но большинство из них устарели и получают ошибки
- и не работают.
Пожалуйста, предложите что-то последнее и только то, что вы использовали.