Java完成数学算式计算器二——用数组完成数学算式的解析
发布时间
阅读量:
阅读量
一、程序要求
对常规数学表达式进行分析,完成包含括号的加减乘除基础运算。
二、基本思路
在上一篇文章中,我从常规的思维逻辑出发,解析了通过直接递归遍历字符串的方式来处理数学四则运算表达式的问题。该方法虽然思路清晰,但实际编写代码时存在可读性较差的问题。本文将采用另一种实现方式,借助Java中的ArrayList集合(数组)结构来达成目标。
此次我将按照由简入繁的思路进行分析:
- 1)、单一数值的情况:例如3,其计算结果即为该数值本身
- 2)、引入加减法后的计算:如1+6-4,按照从左至右的顺序依次执行加减操作,最终可简化为1)
- 3)、引入乘除法后的计算:如1+2*3-4,在从左到右的处理过程中优先执行乘除运算,最终将转化为2)
- 4)、引入括号后的计算:如1*(1+23-4)+5,首先提取括号内部的部分(即3)),计算其结果后替换原括号内容,得到新的表达式13+5,再次回归到3)的情形
由此可见,在处理数学表达式时,应当遵循由复杂到简单、由难至易的原则。通常情况下,括号的存在会增加解析难度。因此,在解决四则运算问题时,我们应首先考虑如何处理不包含括号的表达式。
对于一个无括号的数字式子:-1 +2-3/3+-2 :*
- 1、将数值与运算符号进行区分,各自存入对应的数组中:

还没有任何评论哟~
