admin 管理员组文章数量: 887007
(算法)java完成解析数学算式(计算器)二 —— 用数组解析
一、程序要求
解析一般数学算式,实现简单的带括号的加减乘除运算。
二、基本思路
上一篇我以正常思考计算式子的角度考虑,介绍了直接递归遍历字符串解析数学四则运算式子,思路很好理解,但程序写出来较为难读。这里再用另一种方法,采用java的ArrayList集合(数组)来实现目的。
这次我从易到难考虑:
- 1)、单个数:如3,运算结果即这个数
- 2)、加入加减后运算:如1+6-4,从左往右依次加减,式子将变为1)
- 3)、加入乘除后运算:如1+2*3-4,从左往右依次先做乘除,式子将会变为2)
- 4)、加入括号后运算:如1*(1+2*3-4)+5,单独拿出括号中的内容,即3),将计算结果替换括号1*3+5,又变成3)的情况
因此,对于一个数字式子,我们应该考虑化繁为简、由难变易。往往加入括号后,让我们解析起来增加了困难,所以,解析无括号的四则运算是我们应该考虑的第一步。
对于一个无括号的数字式子:-1+2*-3/3+-2 :
- 1、把数字和运算符分离,分别放入两个数组:
- 2、遍历符号数组,先从左向右找乘除,如上b1为第一个乘除号,则删除b1、a1、a2,将a1 b1 a2的运算结果插入到a1;以此类推至无乘除号:
- 3、同2,从左往右依次计算加减至无加减:
- 4、此时a0即为运算结果
对于一个有括号的式子,我们只有按无括号的计算方法计算出括号中
本文标签: (算法)java完成解析数学算式(计算器)二用数组解析
版权声明:本文标题:(算法)java完成解析数学算式(计算器)二 —— 用数组解析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732357364h1534818.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论