Java 将插入的字符串转换为可编译表达式
不知何故,我对Java不太熟悉,所以我的问题看起来很琐碎,但我在书中的任何地方都找不到答案 我想与一个用户启动一个对话框,在其中输入一个算术表达式,例如2*x+y,然后针对给定的x和y值打印出该表达式的结果Java 将插入的字符串转换为可编译表达式,java,string,compiler-construction,expression,Java,String,Compiler Construction,Expression,不知何故,我对Java不太熟悉,所以我的问题看起来很琐碎,但我在书中的任何地方都找不到答案 我想与一个用户启动一个对话框,在其中输入一个算术表达式,例如2*x+y,然后针对给定的x和y值打印出该表达式的结果 String EXPRESION = null; EXPRESION = JOptionPane.showInputDialog("Please enter expresion for dy/dx"); double x = 1.4; double y = 5
String EXPRESION = null;
EXPRESION = JOptionPane.showInputDialog("Please enter expresion for dy/dx");
double x = 1.4;
double y = 5;
double output = HERE IS THE PROBLEM
JOptionPane.showMessageDialog("The value is" +output);
我无法转换用户插入的字符串,因此它将用作x和y的算术表达式,从而定义输出值
短暂性脑缺血发作
JMT您必须编写一个表达式解析器来完成这种行为。实现这一点的方法有很多: 使用ANTLR编写自己的表达式解析器。 包括脚本语言Jython、Beanshell、JavaScript。。。并使用它来解析和计算表达式。Java脚本API可以向您展示如何做到这一点。
您必须编写一个表达式解析器来完成这种行为。实现这一点的方法有很多: 使用ANTLR编写自己的表达式解析器。 包括脚本语言Jython、Beanshell、JavaScript。。。并使用它来解析和计算表达式。Java脚本API可以向您展示如何做到这一点。
自己解析它们并不难,但如果您需要快速且可能准确的结果,您可以使用现有的库之一解析算术表达式,就像这样 有关示例,请参见。
看起来杰普是个付费软件。这可能不是问题,否则正如我所写的,您应该能够找到许多等效的库。自己解析它们并不难,但如果您需要快速且可能准确的结果,您可以使用现有库中的一个来解析算术表达式,类似或类似的 有关示例,请参见。
看起来杰普是个付费软件。这可能不是问题,否则正如我所写的,您应该能够找到许多等效的库。Java中没有将字符串作为表达式计算的本地工具。因此,你必须自己做这项工作 如果您只是想要一个快速而肮脏的解决方案,Javassist包含一个代码段编译器,允许您使用表达式定义一个新类,并调用它以获得结果,之后您可以放弃它,即在单独的类加载器中运行它。但这需要一些工作:
Java中没有将字符串作为表达式计算的本机工具。因此,你必须自己做这项工作 如果您只是想要一个快速而肮脏的解决方案,Javassist包含一个代码段编译器,允许您使用表达式定义一个新类,并调用它以获得结果,之后您可以放弃它,即在单独的类加载器中运行它。但这需要一些工作:
你也可以看看JScheme。需要编译并运行jschemejar文件
import jscheme.JS;
String query = "(+ 10 20)";
System.out.println(query + " = " + JS.eval(query));
参见下面的第三个示例
JScheme主页您也可以查看JScheme。需要编译并运行jschemejar文件
import jscheme.JS;
String query = "(+ 10 20)";
System.out.println(query + " = " + JS.eval(query));
参见下面的第三个示例
如何将字符串转换为算术表达式
为此,我们需要一个单独的jar文件:bsh.jar文件
需要为上述jar文件设置类路径
资料来源:
如何将字符串转换为算术表达式
为此,我们需要一个单独的jar文件:bsh.jar文件
需要为上述jar文件设置类路径
资料来源: