黑马程序员技术交流社区

标题: 算术式子 [打印本页]

作者: hmr8    时间: 2013-4-23 16:54
标题: 算术式子
java中表达式怎么弄,如a*(b-(c-d))怎样保证优先级和结果正确,注表达式在键盘读出!
作者: 吴波    时间: 2013-4-23 17:00
不太懂,你想问的是什么?
作者: 尹丽峰    时间: 2013-4-23 17:25
运算符优先级问题。提高其优先级就在对应算式上加上括号即可。Java中的运算符按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ * / % + - << >> >>> <> < = > \ == != &^& & || ? := op=
作者: 刘胜寒    时间: 2013-4-23 17:30
封装成StringBuffer或者StringBuilder
每次计算第一个() 然后替换 知道把所有的()替换完之后
进行乘除操作并替换
然后加减操作并替换
然后就是结果了
其实就是递归....


不然你就用栈来做 用栈现在不会了

只能给你模拟一下了
加入 5+6+(6+8)+(7-9)
得到运算结果
1,5+6+14+(7-9)
2,5+6+14-2
3,13+14-2
4,27-2
5,25
如果里面的 有那个括号嵌套的话
也没关系,因为 括号最终会分解为 + - * / 这样的简单操作而不包含括号
就如(5+(5*6+(6/2)))
可以分解为 5  +   (5*6+(6/2))
而  (5*6+(6/2)) 可以分解为 5*6 + (6/2)
(6/2) 直接元算得到3
5*6 + (6/2) --->5*6+3 --> 30+3 -->33
所以5  +   (5*6+(6/2))--->5+33-->38
(5+(5*6+(6/2)))--->38
作者: 黄玉昆    时间: 2013-4-24 22:49
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2