使用java语言动态计算表达式(或方程)的值

使用java语言动态计算表达式(或方程)的值,java,equation-solving,arithmetic-expressions,Java,Equation Solving,Arithmetic Expressions,我必须编写一个接受三个参数和一个算术表达式(或方程式)的方法。必须根据方程式返回结果。但问题是,方程式是作为字符串给出的,必须转换才能进行算术运算(我不知道怎么做)。我们如何在java中有效地解决这个问题。下面给出了相同的代码 public static void main(String[] args) { System.out.println(getResult(2,3,5,"(a+b)*c/(a+c)")); } static double getResult(int a,int b

我必须编写一个接受三个参数和一个算术表达式(或方程式)的方法。必须根据方程式返回结果。但问题是,方程式是作为字符串给出的,必须转换才能进行算术运算(我不知道怎么做)。我们如何在java中有效地解决这个问题。下面给出了相同的代码

public static void main(String[] args) {
    System.out.println(getResult(2,3,5,"(a+b)*c/(a+c)"));
}
static double getResult(int a,int b,int c,String expr)
{
    //double result=(a+b)*c/(a+c);
    double result=expr;
    return result;
}
在这里,getResult方法必须接受三个整数和一个字符串形式的方程。如果有人能提出有效解决这个问题的解决方案或替代方法,那就太好了

谢谢大家的建议。使用Javaluator库重写代码

    StaticVariableSet<Double> variablelist = new StaticVariableSet<Double>();
    variablelist.set("a", 2.0);
    variablelist.set("b", 3.0);
    variablelist.set("c", 5.0);

    System.out.println(new DoubleEvaluator().evaluate("(a+b)*c/(a+c)",variablelist));
StaticVariableSet variablelist=新的StaticVariableSet();
变量列表集(“a”,2.0);
变量列表集(“b”,3.0);
变量列表集(“c”,5.0);
System.out.println(新的DoubleEvaluator().evaluate((a+b)*c/(a+c)”,variablelist));

您需要将字符串解析为有效表达式,然后找到值。首先看一看递归下降解析器。你可以使用第三方图书馆(如果允许的话)

你的限制是什么,比如“允许做X”和“应该做Y”?你可以想象,这个问题已经解决了很多很多次。如果你需要作为一名专业人士来做这件事,您只需要从众多库中选择一个。@tucuxi感谢我的问题得到了解决。您可以使用一些java表达式计算器库谢谢您的评论。这是最简单的解决方案吗。语言本身是否有任何帮助库可以做到这一点。请看这篇文章:谢谢。您可以使用一些java表达式计算器库吗