这是科学计算器 不是你想象中那么容易搞出来的
至少要学过数据结构与算法才好理解
确实如楼上所说用栈来实现
不过还要知道什么是中缀表达式 什么是后缀表达式(逆波兰表达式)
像你的3*(2+1)这是中缀表达式 我们看容易理解 计算机就看不懂了
如果要计算机来计算必须转成后缀表达式如 321+*
用栈来处理:
扫描并压入3,2,1
扫描到+时弹出1,2进行+运算得到3后压入栈 栈中就是3,3
扫描到*时弹出栈顶的3,3进行*运算得到9压入栈 栈中就是9
然后表达式扫描结束 栈中剩下9就是结果
后缀表达式就没有括号了 但是运算顺序还是正确的
我们要做的就是把中缀表达式转成后缀表达式
如果学过算法的话就好理解了 没学过可能理解起来有点困难
我以前写过一个科学计算器 可以处理加减乘除括号小数 但是不能处理表达式中数据为负数的情况
给个传送门:http://blog.163.com/ghost_wzf/blog/static/8959217120091268594778/