锁定老帖子 主题:怎么在JAVA中运算表达式?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-09
呵呵,这边有个小子用java 写的.
http://dev.csdn.net/Develop/article/28/75723.shtm |
|
返回顶楼 | |
发表时间:2007-03-09
简单的话,我记得jakarta commons JEXL可以搞定
|
|
返回顶楼 | |
发表时间:2007-03-09
google javacc or antlr
|
|
返回顶楼 | |
发表时间:2007-03-09
zeroxin 写道 呵呵,这些当然也是可以的,我的意思是说怎么在java里来实现,比如目前大部分的JDK1.4平台上用纯java方法来做。
使用Beanshell,估计是最合适你需求的。 它可以解释执行Java语法,当然也是纯Java实现的,一个很小的库。 |
|
返回顶楼 | |
发表时间:2007-03-09
projectnibble.org
|
|
返回顶楼 | |
发表时间:2007-03-09
自己生成class文件,编译,运行
一劳永逸 |
|
返回顶楼 | |
发表时间:2007-03-09
呵呵,找本数据结构与算法的书吧。
只实现+-*/与括号的话很容易的,用逆波兰式,用不了200行代码。 ps:我这里也有个计算表达式值的代码,用正则式,编着玩的,效率比用逆波兰式的差很多。 http://eastsun.iteye.com/blog/55852 |
|
返回顶楼 | |
发表时间:2007-03-09
其实很简单的,用sql语句select一下就出来了
|
|
返回顶楼 | |
发表时间:2007-03-09
可以用rhino,java 6的javascript实现实际上就是把这个搬过来了。
java 代码
|
|
返回顶楼 | |
发表时间:2007-03-09
fujohnwang 写道 简单的话,我记得jakarta commons JEXL可以搞定
附上测试代码: import org.apache.commons.jexl.Expression; import org.apache.commons.jexl.ExpressionFactory; import org.apache.commons.jexl.JexlContext; import org.apache.commons.jexl.JexlHelper; import junit.framework.TestCase; public class JexlTest extends TestCase { public void test() throws Exception { //Create an expression object String jexlExp = "9*(1+2)"; Expression e = ExpressionFactory.createExpression(jexlExp); // Create a context JexlContext jc = JexlHelper.createContext(); // Now evaluate the expression, getting the result Object result = e.evaluate(jc); System.out.println("result:" + result); System.out.println("result type:" + result.getClass().getName()); assertEquals(((Long) result).intValue(), 27); } } |
|
返回顶楼 | |