乐趣区

关于programming:练习题-计算器-2

在上一题的根底上将计算器的外围逻辑提取进去,封装一个框架无关的计算器模块,并革新你的计算器利用。

限度

  • 你不能够应用 eval() 函数来执行计算
  • 你不能够应用 new Function('...') 函数来执行计算

用例

在上一题的根底上减少一些边界状况的解决:

  1. 用户能够看到显示屏显示以后输出的数字或最初一次操作的后果。
  2. 用户能够看到一个蕴含数字 0-9、操作符 —— ‘+’、’-‘、’*’、’/’ 和 ‘=’ 按钮的输入板,一个 ‘AC’ 按钮(用于革除所有)。
  3. 用户能够通过点击输入板上的数字来输出最多八位数的数字序列,任何超过 8 位的数字的输出都将被疏忽。
  4. 用户能够点击 ‘AC’ 按钮来革除所有的外部工作区域,并将显示值设为 0。
  5. 初始值为 0,输出操作符则以 0 为操作数,否则按支出的数字作为操作数;
  6. 最初输出等号后,将计算结果作为下一轮计算的初始值;
  7. 以后操作数为 0 时,再反复输出 0 时须要疏忽,避免出现 00000123 这样的显示;
  8. 临时不反对数字正负符号输出,所有操作符号都以最初输出为准;
    例如:当初是 3 +,再输出减号变为 3 –
  9. 如果上一次输出的是操作符,当初输出等号反对主动去掉多余的操作符再进行计算。

脚手架

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…

退出移动版