Считывание функции вида f(x) для дальнейшей работы с ней

помогите пожалуйста. Задача состоит в том, что бы программа на java считывала функцию введеную в консоль (ну или в будущем в EditText в AndroidStudio). Я пишу калькулятор интегралов, и столкнулся с проблемой, что не могу придумать способ считывания функции. Ниже представлен код, который считает примерное значение интеграла для y=x^2. Надо что бы программа принимала String например:(x^2-2+x)/20 и выполняла все что указано в коде, только для введеной функции.

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
     
            /*входные данные, вместо первого значения должна вводиться функция. 
              Второе и третье значение - это пределы интеграла, а четвертое - dx.*/
            func(0,-1,1,0.001);
    }
    public static int func(int func, int f, int s, double dx){
//объявляется массив под площади под графиком
        double[] members;
//Считается количество малых площадей, а затем округляется до большего целого числа
        double g = (s-f)/dx;
        DecimalFormat decimalFormat = new DecimalFormat("###");
        int result  = Integer.parseInt(decimalFormat.format(g));
        int i = 0;
        double a = f; 
//Запускается цикл который находит значение функциии и умножает его на dx, добавляя в ячейку массива
        members = new double[result];
        while(i < result){
            double sqa = a * a * dx;
            a = a + dx;
            members[i] = sqa;
            //System.out.println(members[i]);
            i++;
        }
//находит сумму малых площадей
        double sum = 0;
        for (int x = 0; x < result; x++) {
            sum = sum + members[x];
            System.out.println(sum);

        }
        return 0;
    }

}

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