锁定老帖子 主题:怎么在JAVA中运算表达式?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-09
zgd 写道 其实很简单的,用sql语句select一下就出来了
还是这个实用 ![]() |
|
返回顶楼 | |
发表时间:2007-03-09
两个方法:
1。把那个表达式字符串构造成一个java源代码的方法->javac编译->ClassLoader加载->反射执行 2. 自己写代码解析, 也就200-300行代码的级别就能实现算数运算和常用函数 |
|
返回顶楼 | |
发表时间:2007-03-10
parser combinator:
http://jparsec.codehaus.org/Tutorial |
|
返回顶楼 | |
发表时间:2007-03-11
呵呵,如此多的解决方案,javaeye果然卧虎藏龙啊。
我之前实现这个表达式解析的算法。我的做法是将+ - * / ( ) 定义为关键字,表达式首先要被关键字拆分开,这样就将关键字和数值分开了,而对括号的操作则是个递归的。 |
|
返回顶楼 | |
发表时间:2007-03-11
boogie的方法听上去不错....
其他 的不很王道 |
|
返回顶楼 | |
发表时间:2007-03-11
再给提供一个:
JEP - Java Math Expression Parser http://www.singularsys.com/jep/ |
|
返回顶楼 | |
发表时间:2007-04-05
zeroxin 写道 请教个问题,怎么在java中调用表达式?
比如如下类: public class Test{ public static void main(String[] args){ String str = "9*(1+2)"; //怎么求出这个表达式的值是27呢? ...... } } 想了好久也没有想出什么特别好的方法,看看大家有没有好的解决方法(在java中实现,比如jdk1.4),谢谢! 你可以下载BeanShell组件来计算表达式的值 代码如下 package test; import bsh.Interpreter; import bsh.EvalError; public class Test { public static void main(String[] args) { try { String expression="value=9*(1+2)"; Interpreter inter=new Interpreter(); inter.eval(expression); Integer value=(Integer) inter.get("value"); System.out.println("value = " + value); } catch (EvalError evalError) { evalError.printStackTrace(); } } } 输出为 value=27; |
|
返回顶楼 | |
发表时间:2007-04-05
表达式计算的解决方案,学习了,
总结各位老大的方法: 1.jakarta commons JEXL. 2.Beanshell 3.Java Math Expression Parser jep 4.parse combinator jparsec 5.jdk 6.0的 script 6.利用SQL 7.自己写语法分析 |
|
返回顶楼 | |
发表时间:2007-04-06
学习了,竟然有这么多解决方法
当初学习“编译原理”时用c++做过一个文法分析器,感觉不是太难 不过网上有现成的工具的话,还是拿来 直接用比较方便 |
|
返回顶楼 | |
发表时间:2007-04-06
同意用sql,
方法比较特别, 但是实用 |
|
返回顶楼 | |