我对Java不熟悉,所以我的问题看似微不足道,但是我无法在书中找到答案。
我想初始化一个用户的对话框,在该对话框中输入算术表达式(例如(2 * x + y))然后打印出这样的表达式的结果(对于给定的x和y值)< / p>
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的算术表达式,因此定义输出值
TIA JMT
答案 0 :(得分:4)
自己解析它们并不是很难,但是如果你需要快速且可能准确的结果,你可以使用现有的一个库来解析算术表达式,比如JEP或者{{3} }。
有关示例,请参阅Simple Parser for Arithmetic Expressions。 看起来Jep是付费软件。它可能不是问题,否则在我写的时候,你应该能够找到许多等效的库。
答案 1 :(得分:3)
您必须编写表达式解析器来完成此类行为。有很多方法可以实现这一目标:
答案 2 :(得分:1)
Java中没有用于将字符串作为表达式进行求值的本机工具。因此,您必须自己完成工作。
如果你只想要一个快速而又脏的解决方案,Javassist包含一个代码片段编译器,允许你用你的表达式定义一个新的类,并调用它来获得你的结果,然后你可以丢弃它(即在一个单独的运行它类加载器)。这需要一些工作:)
答案 3 :(得分:1)
你也可以看看JScheme。需要编译&amp;使用jscheme jar文件运行。
import jscheme.JS;
String query = "(+ 10 20)";
System.out.println(query + " = " + JS.eval(query));
请参阅http://jscheme.sourceforge.net/jscheme/doc/userman.html#si
下的第三个示例答案 4 :(得分:0)
如何将字符串转换为算术表达式
import bsh.*;
class Operation
{
public static void main(String[] args)throws Exception
{
Interpreter i=new Interpreter();
int r=(Integer)i.eval(args[0]);
System.out.println(r);
}
}
为此,我们需要一个名为:bsh.jar file
的独立jar文件需要为上面的jar文件设置classpath
源: http://ohmjavaclasses.blogspot.com/2011/11/how-to-convert-string-into-arithmetic.html