Menu
CoddyTech

回顾:安全计算器

本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 47 课,共 56 课。

构建一个小型计算器,使它能够应对无效输入,并结合使用 raise、多个 rescue 子句和 ensure。

challenge icon

挑战

中等

定义一个方法 calc(a, op, b),要求:

  • 如果 op 不是 +、-、*、/ 之一,则引发 ArgumentError,并显示消息 "unknown operator"
  • 否则执行相应的运算(/ 使用整数运算)

然后从输入中读取三行,分别是 a、op、b,并在 begin / rescue / ensure 中调用 calc:

  • 成功时,输出 <a> <op> <b> = <result>
  • 遇到 ArgumentError 时,输出 Bad operator
  • 遇到 ZeroDivisionError 时,输出 Cannot divide by zero
  • 在 ensure 中始终输出 --- end ---

在同一个 begin 块中,使用 Integer(...) 解析 a 和 b,这样非整数输入也会输出 Bad operator(ArgumentError 会涵盖这两种情况)。

输入 6 / * / 7 时,输出为:

6 * 7 = 42
--- end ---

输入 10 / / / 0 时:

Cannot divide by zero
--- end ---

亲手试试

# TODO:定义 calc(a, op, b),遇到未知的 op 时抛出 ArgumentError

raw_a = gets.chomp
op    = gets.chomp
raw_b = gets.chomp

# TODO:按要求使用 begin/rescue/ensure

逻辑与流程中的所有课

自己练习: Ruby 在线编译器