如何将一字符型表达式(如:1+2-3*4+(5-6)/7*(8+9)+(10+11)/12)算出值来,不用javacc来作
呵呵,见谅了,问题是用户在作报表得时候,结果可能是第一航得值加上第二行得值等等,基于基本得加减乘除带括号得算法, 如果把相应得值替换就成了上面说得那样:
1+2-3*4+(5-6)/7*(8+9)+(10+11)/12
我不想用javacc来作,因为我认为这个表达式很简单得逻辑,所以请教能不能直接处理,然后算出来,就像:int i=1+2-3*4+(5-6)/7*(8+9)+(10+11)/12;
呵呵
问题点数:50、回复次数:14Top
1 楼shenpipi(皮皮)回复于 2005-08-02 18:42:19 得分 0
学编译原理的时候写过,不是很简单的事情.Top
2 楼quentinyi(梦的河流)回复于 2005-08-02 18:47:00 得分 0
不明白,关注中!
Top
3 楼joneyonly()回复于 2005-08-02 18:57:04 得分 0
mark下Top
4 楼JavaVirgin(java者)回复于 2005-08-03 13:12:40 得分 0
有没有高手解决一下撒Top
5 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-08-03 13:26:09 得分 0
可不简单啊,
二叉树
后续便利Top
6 楼unijune(uni)回复于 2005-08-03 15:29:52 得分 0
javascript用eval...java就不知道了...Top
7 楼Tianminghui(colin)回复于 2005-08-03 15:40:55 得分 0
JEP 开源项目,作这个计算是基础Top
8 楼JavaVirgin(java者)回复于 2005-08-04 10:10:09 得分 0
楼上得强啊,我已经下载了在试
Top
9 楼gks_cn(981530)回复于 2005-08-04 12:03:12 得分 0
可以看看数据结构里面的算符优先算法Top
10 楼joneyonly()回复于 2005-08-04 12:26:31 得分 0
《数据结构》的书里有算法的,就是中缀表达式变后缀表达式的算法,变成后缀表达式后,逐个弹出就可以了。弹出两个变量和一个操作符,调用计算函数计算,等堆栈空时,计算完毕。”Top
11 楼lancelobb(兰斯洛特)回复于 2005-08-04 13:06:02 得分 0
楼上的对,这也是编译原理的基础Top
12 楼treeroot(旗鲁特)回复于 2006-05-15 11:40:59 得分 0
直接使用一个栈是可以的Top
13 楼guo__peng(guo__peng)回复于 2006-05-15 11:56:22 得分 0
我记得在学C++的链表的时候做过计算表达试的实验Top
14 楼ryhome()回复于 2006-05-15 13:59:30 得分 0
markTop




