首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java计算三角函数表达式

用Java计算三角函数表达式
EN

Stack Overflow用户
提问于 2015-04-04 12:07:25
回答 3查看 685关注 0票数 2

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-04 12:14:49

看看exp4j

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

代码语言:javascript
复制
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();

在特定情况下,您可以在控制台中向用户请求以下输入,并使用这些输入构建表达式:

  1. 输入要计算的表达式。这将成为ExpressionBuilder构造函数的参数。
  2. 输入表示表达式中变量的字符串。这将成为变量方法的输入。您可以将这些字符串作为键添加到Map中,以便在下一步中使用。
  3. 输入每个变量的值。这将成为setVariable方法的输入。您可以将所有变量值作为在上面步骤中创建的Map中的值进行收集。您可以遍历映射并调用setVariable(键、值),这样就不需要事先知道表达式中有多少变量。
票数 3
EN

Stack Overflow用户

发布于 2015-04-04 13:00:10

试试exp4j。示例(来自链接):

代码语言:javascript
复制
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();

另一个选择是Javaluator。例如,请参阅链接。

还有EvalX。参见下面的示例(从链接中):

代码语言:javascript
复制
Expression expression = new Expression("1+1/3");
result = expression.eval():
expression.setPrecision(2);
result = expression.eval():

我希望这能帮到你!

票数 1
EN

Stack Overflow用户

发布于 2015-12-24 02:04:47

只是一个补充,我最近发现您可以将exp4j ExpressionBuilder分为两部分,并在for循环中向变量添加值,您可以在这个网站https://github.com/fasseg/exp4j/blob/master/src/test/java/net/objecthunter/exp4j/ExpressionBuilderTest.java中找到可能的示例。

代码语言:javascript
复制
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());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29446223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档