本来以为是一道很简单的stack题目,居然花了四五十分钟来解决,JAVA本身就有stack的应用优势,但还是花了自己很多时间。。
提供一些要点吧:
1.首先是来自九度的测试案例
1 + 2
5
4 + 2 * 5 - 7 / 11
3
0 + 5
1 - 2 * 3 * 4 + 5 * 6
1 * 2 * 3 + 5 + 6 - 7 * 8 + 9 / 10
0 + 0 * 0
1 + 5 * 0
0 + 5
0
2.输入0时结束,但是运算到0的时候不结束,这个应该很容易排除
3.输出之前再检查一遍stack是否有残留,如果有就再次运算,直到operator的stack为空,num的stack只剩一个的情况即为结果,保留两位输出就行
4.利用float提交时出现WA,换用double就解决了。(似乎很多人都是错在这里)
5.在HDU的OJ提交的时候,利用System.out.printf()输出‘\n‘来换行的情况下出现PE,但是换成System.out.println()来换行直接AC了,都是一些小细节的问题
最后是sourcecode:
[JAVA][HDU 1237][九度 1019][简单计算器]
原文地址:http://blog.csdn.net/szhielelp/article/details/41511283