java - 在 Java 中计算三角表达式

标签 java function

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

最佳答案

看看exp4j

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

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. 输入代表表达式中变量的字符串。这将成为变量方法的输入。您可以将这些字符串作为键添加到可在下一步中使用的映射。
  3. 输入每个变量的值。这将成为 setVariable 方法的输入。您可以收集所有变量值作为在上述步骤中创建的映射中的值。您可以迭代映射并调用 setVariable(key,value),这样您就不需要事先知道表达式中存在多少个变量。

关于java - 在 Java 中计算三角表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29446223/

相关文章:

java - 我可以使用正则表达式删除 "any whitespace that is not between quotes"吗?

java - HTTP Get 请求 - 不兼容的类型

Java:从 BufferedImage 到 IplImage

java - Magnolia 自定义内容类型作为属性

C++ 将用户定义的函数传递给另一个函数

java - 无法在 GWT 中将 JSON 字符串解析为 Java/JavaScriptObject

function - Monad 和函数之间的区别

javascript - 如果在 javascript .some() 函数中不满足条件,则返回值

c - 尝试查找一行中单词的索引(以单词数衡量)

list - Lisp,关于列表和递归的几个问题