论坛首页 Java企业应用论坛

怎么在JAVA中运算表达式?

浏览 19438 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-04-06  
JEXL不错
0 请登录后投票
   发表时间:2007-04-06  
beanshell 我最喜欢 简单够用
0 请登录后投票
   发表时间:2007-04-07  
用sql却是很特别,实用不见得吧,首先要获取一个连接,还要到数据库服务器去运算,太夸张了
0 请登录后投票
   发表时间:2007-04-07  
使用antlr,很容易的,自带的例子就有
0 请登录后投票
   发表时间:2007-04-07  
呵呵,用sql,确实够特别,以前从来没想到。。。
0 请登录后投票
   发表时间:2007-04-07  
fhjxp 写道
用sql却是很特别,实用不见得吧,首先要获取一个连接,还要到数据库服务器去运算,太夸张了


这是一个思路啦,就是调用其他已经可以支持解析表达式的程序,比如本地计算器,外部网页,等等.
0 请登录后投票
   发表时间:2007-04-08  
可以用jep 去做
0 请登录后投票
   发表时间:2007-04-08  
我想如果你看JAVACC, 就应该不会有这个问题, JAVACC可以自定义语法, 来解析一个表达式, 计算诸如四则运算是小菜, 还有更广泛的用途. lucene 的语法解析就是用这个实现的. 建议了解一下, 你会发现一个新的世界.
0 请登录后投票
   发表时间:2007-04-09  
解析字符串,把数字和运算符放入不同的堆栈中然后进行入栈出栈操作
0 请登录后投票
   发表时间:2007-04-09  
由于javascript直接可以计算数学表达式,所以建议用rhino(js引擎的java实现):
public class MathEval {

public static void main(String[] args) {

Context cx = Context.enter();
try {
Scriptable scope = cx.initStandardObjects();
String str = "9*(1+2)";
Object result = cx.evaluateString(scope, str, null, 1, null);
double res = Context.toNumber(result);
System.out.println(res);
} finally {
Context.exit();
}
}
}

另:jdk6已经把rhino收入其中,
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics