我正在创建一个图形计算器作为我们在微积分中的项目。我的程序中唯一剩下的就是用户的输入。
例如,用户在名为“userInput”的文本字段中放置了一个输入:
y=sin(x)
接下来,将其转换为字符串将有
String equation = userInput.getText();
字符串变量 'equation' 的值将是:
"y=sin(x)"
有没有办法将字符串读取为 Java 代码?
我正在创建一个图形计算器作为我们在微积分中的项目。我的程序中唯一剩下的就是用户的输入。
例如,用户在名为“userInput”的文本字段中放置了一个输入:
y=sin(x)
接下来,将其转换为字符串将有
String equation = userInput.getText();
字符串变量 'equation' 的值将是:
"y=sin(x)"
有没有办法将字符串读取为 Java 代码?
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);
这并不能完全回答您的问题,但可能是实现目标的更好方法。请参阅Javaluator。
我之前遇到过同样的问题(在 C 中创建图形计算器时)。我将表达式转换为逆波兰表示法,然后使用Shutting-yard algorithm对其进行解析。您还可以查看有关表达式评估的GeeksForGeeks教程。