2

我正在创建一个图形计算器作为我们在微积分中的项目。我的程序中唯一剩下的就是用户的输入。

例如,用户在名为“userInput”的文本字段中放置了一个输入:

y=sin(x)

接下来,将其转换为字符串将有

String equation = userInput.getText();

字符串变量 'equation' 的值将是:

"y=sin(x)"

有没有办法将字符串读取为 Java 代码?

4

3 回答 3

0

Janino可以为您做到这一点,假设您希望这些表达式是有效的 Java,我认为ExpressionDemo将是您想要的一个很好的起点。

基本代码将看起来像这样(快速改编自基本示例):

// Compile the expression once; relatively slow.
ExpressionEvaluator ee = new ExpressionEvaluator(
    "sin(x)",                    // expression
    double.class,                // expressionType
    new String[] { "x" },        // parameterNames
    new Class[] { double.class } // parameterTypes
);

// Evaluate it with varying parameter values; very fast.
Double res = (Integer) ee.evaluate(
    new Object[] {          // parameterValues
        new Double(12.34)
    }
);
System.out.println("result = " + res);
于 2013-09-23T10:46:16.750 回答
0

这并不能完全回答您的问题,但可能是实现目标的更好方法。请参阅Javaluator

于 2013-09-23T10:57:03.560 回答
0

我之前遇到过同样的问题(在 C 中创建图形计算器时)。我将表达式转换为逆波兰表示法,然后使用Shutting-yard algorithm对其进行解析。您还可以查看有关表达式评估的GeeksForGeeks教程。

于 2013-09-23T10:51:14.047 回答