Z**n 发帖数: 55 | 1 写个计算器 其中有种功能叫let
syntax 是
let(, , )
例如 let(a, let(b, 10, add(b, b)), let(b, 20, add(a, b))
就会先执行 第二个let 得到 20, 再执行第一个 让a=20, 最后执行第三个let.
有什么办法 在java 里面实现这个呢? | c***w 发帖数: 134 | 2 我是这么想的。
1。创建一个hashmap和stack
2。扫描整个算式,弄清楚结构,var, exp1, exp2
3. 把整个算式stack.push() 并且 put(Expression, Result)
4. 再把exp2压站和放到hashmap中
5. 吧exp1压站和放到hashmap中
6. 不断重复,直到exp1是个整数,不是算式
7. 检查stack, 做pop()算顶上的算式,结构保存在hashmap中。
8. 重复知道stack为空
9. 注意无限循环,做exception检查
我正好也遇到了这题,还以为是主要考oo设计,结构这里要写个小算法,有点麻烦。 |
|