Java 未知公式的包装函数

Java 未知公式的包装函数,java,python,function,Java,Python,Function,有没有办法创建如下函数 我需要计算三角形的面积,我不记得正确的计算公式,也没有互联网或其他信息来源。我所记得的是,这种函数的参数是某些边b和高度h。所以我想创建一些函数,如下所示: public static void calculate(String forgottenFunc, int... params) {/*implementation*/}; 我考虑在不使用RegExp的情况下,从Java实现基于JavaScript的eval函数。我一直在将字符串(forgottenFunc)转换

有没有办法创建如下函数

我需要计算三角形的面积,我不记得正确的计算公式,也没有互联网或其他信息来源。我所记得的是,这种函数的参数是某些边b和高度h。所以我想创建一些函数,如下所示:

public static void calculate(String forgottenFunc, int... params) {/*implementation*/};
我考虑在不使用RegExp的情况下,从Java实现基于JavaScript的eval函数。我一直在将字符串(forgottenFunc)转换为一些实际函数,这些函数将使用给定的参数来计算我需要的内容。或者Python的eval或其他特性的任何替代方案。
感谢免费的Java数学解析器Try。

根据您的评论,我发现您需要的是解析器,而不是闭包

JavaScript eval函数没有内置的等价物。这被认为是邪恶的


您可以使用第三方解析器,也可以使用类似的方法构建自己的解析器。

对于一般解决方案,您可以将公式嵌入到程序中,以字符串形式传递公式,绑定参数并对其求值。从链接页面:

MVEL是一种用于基于Java的应用程序的强大表达式语言。它提供了大量的特性,适用于从最小的属性绑定和提取到完整的脚本的所有方面

将满足您的需要:-)请遵循以下示例:

import org.mariuszgromada.math.mxparser.*;
...
...
public static double calculate(String forgottenFunc, double... params) {
    Function f = new Function(forgottenFunc);
    return f.calculate(params);
}
...
...
System.out.println( calculate("p(a,h) = a*h/2", 2, 3) );
结果:

3.0
请跟随

此外,该软件还使用mXparser,您可以学习语法


致以最诚挚的问候

要计算三角形的面积,请使用a=bh/2I我认为您没有试图找到答案。计算三角形面积有很多不同的方法,维基百科提供了不同的方法。我认为“计算三角形面积”只是一个例子。John gray真正想问的是java有闭包吗?我不需要计算三角形的面积,我需要的是解析一些从字符串格式到实际函数的公式