练习题|练习题 - 计算器 - 2
【练习题|练习题 - 计算器 - 2】在上一题的基础上将计算器的核心逻辑提取出来,封装一个框架无关的计算器模块,并改造你的计算器应用。
限制
- 你不可以使用
eval()
函数来执行计算 - 你不可以使用
new Function('...')
函数来执行计算
- 用户可以看到显示屏显示当前输入的数字或最后一次操作的结果。
- 用户可以看到一个包含数字 0-9、操作符 —— '+'、'-'、'*'、'/' 和 '=' 按钮的输入板,一个 'AC' 按钮(用于清除所有)。
- 用户可以通过点击输入板上的数字来输入最多八位数的数字序列,任何超过8位的数字的输入都将被忽略。
- 用户可以点击 'AC' 按钮来清除所有的内部工作区域,并将显示值设为 0。
- 初始值为 0,输入操作符则以 0 为操作数,否则按收入的数字作为操作数;
- 最后输入等号后,将计算结果作为下一轮计算的初始值;
- 当前操作数为 0 时,再重复输入 0 时需要忽略,避免出现 00000123 这样的显示;
- 暂时不支持数字正负符号输入,所有操作符号都以最后输入为准;
例如:现在是 3 + ,再输入减号变为 3 - - 如果上一次输入的是操作符,现在输入等号支持自动去掉多余的操作符再进行计算。
class Calculator {
// 接收计算器输入
press() {}/**
* 计算当前输入的结果
* @return number
*/
compute() {}/**
* 显示当前的输入值
*
* @return string
*/
display() {}
}const calculator = new Calculator()
// 以下 press 入参只是范例,可以自行定义
calculator.press('3').press('+').press('4').press('×').press(5)
calculator.display() // 3 + 4 * 5
calculator.compute() // 23
ps:以上只是参考范例,大家可以自行封装扩展。后续会增加操作符和操作数的支持,有条件的可以考虑如何封装可扩展的插件化的计算器模块,另外有兴趣的可以尝试使用 TS 来编写。
https://codepen.io/zhbhun/pen...
推荐阅读
- 【vue3源码】一、认识副作用函数与响应式数据
- Python|【Python】常用基本库与第三方库概述
- Python|【算法】python有向图中的最优路径
- 知识总结|【杂记】数字签名概述
- 知识总结|【Shell】编程之文本处理工具sed(7)
- 知识总结|【Shell】编程之文本处理工具awk(8)
- 【算法】python实现最短(长)路径Bellman-Ford算法
- 《Java入门100练》|【第26天】给定 n 个元素的升序数组nums,求实现一个函数在nums中寻找target的下标 | 初识二分查找
- 《Java入门100练》|【第25天】给定一个长度为 n 的数组,统计每个数出现的次数 | 计数哈希
- 《Java入门100练》|【第24天】给定一个长度为 n 的数组,将元素 X 插入数组指定的位置 | 数组插入操作