我正在创建一个图形计算器作为我在微积分中的项目。我程序中唯一剩下的就是来自用户的输入。
例如,用户在名为“userInput”的文本字段中放置了一个输入:
y=sin(x)
接下来,将其转换为字符串
String equation = userInput.getText();
字符串变量'equation'的值为:
"y=sin(x)"
有没有办法将String作为Java代码读取?
答案 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。