锁定老帖子 主题:怎么在JAVA中运算表达式?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-06
JEXL不错
|
|
返回顶楼 | |
发表时间:2007-04-06
beanshell 我最喜欢 简单够用
|
|
返回顶楼 | |
发表时间:2007-04-07
用sql却是很特别,实用不见得吧,首先要获取一个连接,还要到数据库服务器去运算,太夸张了
|
|
返回顶楼 | |
发表时间:2007-04-07
使用antlr,很容易的,自带的例子就有
|
|
返回顶楼 | |
发表时间:2007-04-07
呵呵,用sql,确实够特别,以前从来没想到。。。
|
|
返回顶楼 | |
发表时间:2007-04-07
fhjxp 写道 用sql却是很特别,实用不见得吧,首先要获取一个连接,还要到数据库服务器去运算,太夸张了
这是一个思路啦,就是调用其他已经可以支持解析表达式的程序,比如本地计算器,外部网页,等等. |
|
返回顶楼 | |
发表时间:2007-04-08
可以用jep 去做
|
|
返回顶楼 | |
发表时间:2007-04-08
我想如果你看JAVACC, 就应该不会有这个问题, JAVACC可以自定义语法, 来解析一个表达式, 计算诸如四则运算是小菜, 还有更广泛的用途. lucene 的语法解析就是用这个实现的. 建议了解一下, 你会发现一个新的世界.
|
|
返回顶楼 | |
发表时间:2007-04-09
解析字符串,把数字和运算符放入不同的堆栈中然后进行入栈出栈操作
|
|
返回顶楼 | |
发表时间: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收入其中, |
|
返回顶楼 | |