Benben's Website

动画计算器

运算能力章节运算能力

  • 基础运算:支持 +-*/ 四则运算,遵循标准优先级(先乘除后加减)。
  • 幂运算:使用 ^ 符号表示乘方,优先级高于乘除,右结合(如 2^3^2 = 2^(3^2))。
  • 括号支持:允许任意嵌套的 () 括号,改变运算顺序。
  • 负数处理:支持负号直接输入(如 5+-3 解析为 5 + (-3)),也支持负数作为表达式起始。
  • 缩写输入:小数点前后可省略 0(如输入 .5 自动补全为 0.5)。

交互体验章节交互体验

  • 按键输入:提供数字键 0-9、小数点 .、运算符 +-*/^、括号 ()、退格 <、清空 AC、等于 =
  • 光标操作
    • 支持 移动光标,可在表达式任意位置插入/删除。
    • 光标移动带有非线性缓动动画,视觉反馈柔和。
  • 长按支持:退格键长按可连续快速删除;数字和运算符长按可重复输入。
  • 动效要求:所有按键按下时有缩放反馈;光标移动具有缓动效果。

核心算法实现章节核心算法实现

解析策略采用 递归下降 + 结果栈解析表达式字符串。

  1. 词法分析:将输入字符串拆解为 Token(数字、运算符、括号、负号标记)。
  2. 数值计算:树形遍历Token,执行运算。遇到除零、NaN、无穷大等异常时,停止递归并抛出错误。
  3. 回溯机制:若计算过程中某节点失败,则向上回溯,将整个表达式标记为无效,并清空栈顶中间结果。
  4. 最终输出:成功解析且无错误时,栈顶即为最终计算结果;否则反馈错误信息。

错误处理与用户反馈章节错误处理与用户反馈

  • 实时检查:输入时动态显示错误消息。
  • 计算错误提示:语法错误如括号不匹配、Token解析错误,数字格式错误分别显示不同消息。
  • NaN:针对常见除0,Infinity加减除等运算错误自动识别。

截图章节截图

使用Scratch动画计算器计算嵌套表达式