实验一支持算术表达式求解的计算器

计算器设计主要分为四个部分

1.程序主体页面的设计,页面按钮实现程序的输入输出与结果显示。

2.给算式合法性创建约束。

3.中缀转后缀。

4.计算代码的实现,完成混合求解。

而程序总体分为三个部分

1.图形页面部分。

2.数据的合法性约束与计算。

3.主函数调用鼠标。

1.图形页面的设计

1.show类画出程序主页面大小与初始位置等属性。

2.定义JPanel画计算器页面内部页面,其中需要:

   1)计算器按钮的位置和大小。

   2)背景颜色。

   3)按键效果。

   4)计算器的网络和边界线绘制。

   5)字体,输入字和显示器中输入字的记录。

2.约束

1.左右括号后只能是运算符。

2.小数点后如果没有数字则当做整数运算。

3.输入框是空直接等报错。

4.有左括号没有右括号自动补全。

5.小数点只能有一个,两个小数点报错。

3.中缀转后缀

 后缀表达式适合计算机的运算。但人却不容易写出来。所以程序要将中缀表达式转换为后缀表达式。

参考:中缀表达式转换为后缀表达式 - 格物致知_Tony - 博客园

中缀转后缀运用到栈的知识。

从左到右扫描每一个字符。如果扫描到的字符是操作数(如a、b等),就直接输出这些操作数。

如果扫描到的字符是一个操作符则

(1)如果堆栈是空的或者该操作符的优先级大于堆栈出口的操作符,直接将操作符存储到堆栈中。

(2)如果该操作符的优先级低于堆栈出口的操作符,就将堆栈出口的操作符导出, 直到该操作符的优先级大于堆栈顶端的操作符。将扫描到的操作符导入到堆栈中。

的处理:

如果遇到的操作符是左括号"(”,就直接将该操作符输入到堆栈当中。该操作符只有在遇到右括号“)”的时候移除。这是一个特殊符号该特殊处理。

如果扫描到的操作符是右括号“)”,将堆栈中的操作符导出到output中输出,直到遇见左括号“(”。将堆栈中的左括号移出堆栈。继续扫描下一个字符。

如果输入的中缀表达式已经扫描完了,但是堆栈中仍然存在操作符的时候,我们应该讲堆栈中的操作符导出并输入到output当中。

4.带括号式子的运算

使用前面水缀表达式的数组和一个空栈,完成相关式子的计算。

  1. 遇到是数字就进栈。
  2. 遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈。

 这样就实现了括号的运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值