读取字符串作为Java代码

时间:2013-09-23 10:37:29

标签: java

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

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

y=sin(x)

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

String equation = userInput.getText();

字符串变量'equation'的值为:

"y=sin(x)"

有没有办法将String作为Java代码读取?

3 个答案:

答案 0 :(得分:0)

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

基本代码看起来像+ - 像这样(快速改编自basic example):

// 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);

答案 1 :(得分:0)

之前我遇到了同样的问题(在C中创建图形计算器时)。我在Reverse Polish notation中转换了表达式,然后使用Shunting-yard algorithm对其进行了解析。您还可以查看关于表达式评估的GeeksForGeeks教程。

答案 2 :(得分:0)

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