未知配方的包装功能

时间:2012-04-22 21:43:15

标签: java python function

有没有办法创建如下功能?

我需要计算三角形的面积,我不记得计算这个的正确公式,并且没有互联网或其他一些信息来源给我。我记得的是,这种功能的论据是某一方 b 和高度 h 。所以我想创建一些看起来像这样的函数:

public static void calculate(String forgottenFunc, int... params) {/*implementation*/};

我想过用Java实现基于JavaScript的eval函数,而不是使用RegExp。我一直坚持将字符串(forgottenFunc)转换为一些真正的函数,它将使用给定的参数来计算我需要的东西。或者Python的eval或其他一些功能的任何替代品。 感谢

4 个答案:

答案 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

请关注mXparser tutorial

祝你好运

答案 2 :(得分:0)

根据你的评论,我发现你需要一个解析器,而不是一个闭包。

没有内置的等效JavaScript eval函数。它被认为是邪恶的。

您可以使用zovegames suggests之类的第三方解析器,也可以使用javacc等内容构建自己的解析器。

答案 3 :(得分:0)

对于一般解决方案:您可以在程序中嵌入MVEL,将公式作为字符串传递,绑定参数并对其进行评估。从链接页面:

  

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