有没有办法创建如下功能?
我需要计算三角形的面积,我不记得计算这个的正确公式,并且没有互联网或其他一些信息来源给我。我记得的是,这种功能的论据是某一方 b 和高度 h 。所以我想创建一些看起来像这样的函数:
public static void calculate(String forgottenFunc, int... params) {/*implementation*/};
我想过用Java实现基于JavaScript的eval函数,而不是使用RegExp。我一直坚持将字符串(forgottenFunc)转换为一些真正的函数,它将使用给定的参数来计算我需要的东西。或者Python的eval或其他一些功能的任何替代品。 感谢
答案 0 :(得分:1)
尝试Jep,一个免费的Java数学解析器。
答案 1 :(得分:1)
mXparser符合您的需求:-)请按照以下示例:
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
祝你好运
答案 2 :(得分:0)
根据你的评论,我发现你需要一个解析器,而不是一个闭包。
没有内置的等效JavaScript eval函数。它被认为是邪恶的。
您可以使用zovegames suggests之类的第三方解析器,也可以使用javacc等内容构建自己的解析器。
答案 3 :(得分:0)
对于一般解决方案:您可以在程序中嵌入MVEL,将公式作为字符串传递,绑定参数并对其进行评估。从链接页面:
MVEL是基于Java的应用程序的强大表达式语言。它提供了大量的功能,适用于从最小的属性绑定和提取到完整的脚本的所有内容。