java怎么动态化用户输入的函数求定积分

import java.util.Scanner;


public class Demo{
     /*
     * 用户输入区间
     * 均分区间
     * 获取到函数原型
     * 每个区间的中点带入函数原型得到高度y
     *高度y的和乘以均分的区间x
     * 得到积分
     * */

    static float minX;
    static float maxX;
    static String function;
    static float num = 0;//区间高度之和
    static float leng = 0;//区间的长度
    static float centerNum = 0;//区间的中间值

    public static void DingJifen(){
        System.out.println("请输入要定积分的区间:\nmin(x) = ");
        minX = new Scanner(System.in).nextFloat();
        System.out.println("max(x) = ");
        maxX = new Scanner(System.in).nextFloat();
        System.out.println("请输入函数原型:\ny=");
        function = new Scanner(System.in).next();

        leng = (maxX - minX)/100;
        for(float a = minX;a<=maxX;a += leng){
            centerNum = a+leng/2;
            num += function(centerNum);
        }
        System.out.println("在"+minX+"到"+maxX+"区间内,这个函数的定积分是:"+(num*leng));

    }

    // 获取函数原型
    private static float function(float centerNum) {
     /*
      * 这个方法不知道怎么写了
      * 想着把用户输入的函数原型转化成ascill码
      * 然后循环遍历判断数据类型
      * 最后整合起来
      * 但是用户输入的函数里面可能有log、sqrt、sin等等
      * 不知道怎么办了,是不是我思路有问题,求解!
      * */
        float y;
        for(int i = 0;i<function.length();i++){
            int a = function.charAt(i);//转换成ascll码
            Object b = null;
            if (48<=a&&a<=57) {
                //a是数字
                b = a;
                break;
            }else if(65<=a&&a<=90){
                //a是大写字母
                b = (char)a;
                break;
            }else if(97<=a&&a<=122){
                //a是小写字母
                b = (char)a;
                break;
            }else if(a==94){
                //a是^
                b = '^';
                break;
            }
            if(a=='x'||a=='X'){
                b = centerNum;
            }

        }
        return 0;
    }

    public static void main(String[] args) {
        DingJifen();
    }
}

其实可以这样,可以学习下 Matlab、Maple, Mathematica 学习那些软件的编程语言,用 C java 这种属于通用的编程语言,你是需求偏向数学专业的,不适合用这类语言来实现,。还有另一种方式,你去寻找 有没有计算不定积分的java的jar包,,我就是这样学习的

matlab不是用来做图像处理的嘛,我是觉得这个用户输入的函数原型可以用正则表达式什么的去获取,之前想着把用户输入的函数原型都转化成ASCII码然后根据每种数据的区间去判断,写到一半写不下去了 太特娘的复杂了,而且仔细想想也不一定能实现的了,这么一道大二初学Java的实训题,我一大三的无可奈何了,流下了不学无术的眼泪