Java中三角表达式的求值

Java中三角表达式的求值,java,function,Java,Function,如何在控制台中插入三角函数以进一步使用它??例如,sin(x)=2x+3log(y)或类似的东西。。我需要以字符串形式输入表达式,然后将其作为字符串进行处理。但是怎么做呢?看看 我们已经在我们的一个项目中广泛使用了这个库,以解决您所面临的完全相同的问题 Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)") .variables("x", "y") .buil

如何在控制台中插入三角函数以进一步使用它??例如,sin(x)=2x+3log(y)或类似的东西。。我需要以字符串形式输入表达式,然后将其作为字符串进行处理。但是怎么做呢?

看看

我们已经在我们的一个项目中广泛使用了这个库,以解决您所面临的完全相同的问题

Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
                .variables("x", "y")
                .build()
                .setVariable("x", 2.3)
                .setVariable("y", 3.14);
        double result = e.evaluate();
在您的特定情况下,您可以在控制台中要求用户提供以下输入,并使用这些输入构建表达式:

  • 输入要计算的表达式。这将成为ExpressionBuilder构造函数的参数
  • 输入表示表达式中变量的字符串。这将成为变量方法的输入。您可以将这些字符串作为键添加到地图中,以便在下一步中使用
  • 输入每个变量的值。这将成为setVariable方法的输入。您可以将所有变量值收集为在上述步骤中创建的映射中的值。您可以迭代映射并调用setVariable(key,value),这样您就不需要事先知道表达式中存在多少变量
  • 试试。示例(来自链接):

    另一个选项是。例如,请参见链接

    还有。请参见以下示例(来自链接):


    我希望这有帮助

    只是一个补充,我最近发现可以将exp4j ExpressionBuilder分为两部分,并在for循环中为变量添加值,您可以在这个网站上找到一些示例

    ExpressionBuilder e=新的ExpressionBuilder(“x^2”)
    .变量(“x”)
    .build();
    对于(int i=0;i<10;i++){
    e、 设置变量(“x”,i);
    System.out.println(“x^2=“+e.evaluate());
    }
    
    您是否搜索过该网站,或者在google上花了一些时间来寻找已经实现这一功能的API?是的,我正在寻找。我不知道如何精确地表达我的请求。你可以将它作为中缀表达式输入,然后将它解析到某种堆栈上,然后处理计算。好的,谢谢,我会的try@Mike看看我的答案,一个现有的库可以解决你的问题。看起来不错,但是在哪里可以看到安装软件包的说明?@Mike你有没有尝试在google中搜索exp4j?只要访问第一个弹出的链接,您就会找到一个下载jar的链接。您可以将此jar添加为项目依赖项。如果您不知道如何在java程序/项目中使用外部JAR,请在stackoverflow上发布一个新问题。我相信我已经回答了你的直接问题。@Mike很高兴这有帮助!
    Expression e = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
            .variables("x", "y")
            .build()
            .setVariable("x", 2.3)
            .setVariable("y", 3.14);
    double result = e.evaluate();
    
    Expression expression = new Expression("1+1/3");
    result = expression.eval():
    expression.setPrecision(2);
    result = expression.eval():
    
    ExpressionBuilder e = new ExpressionBuilder("x^2")
     .variable("x")
     .build();
    
    for(int i = 0; i < 10; i++) {
      e.setVariable("x", i);
      System.out.println("x^2 = " + e.evaluate());
    }