Menu
CoddyTech

回顾:安全计算器

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

challenge icon

挑战

中等

构建一个能安全处理无效输入的小型计算器。

定义 CalcError: Error,包含以下情况:parse、divideByZero、unknownOp。

定义一个会抛出异常的函数 compute(_ a: String, _ op: String, _ b: String) throws -> Int,该函数:

  • 将 a 和 b 解析为整数,如果任一解析失败,就抛出 .parse
  • 当 op 不是 +、-、*、/ 之一时,抛出 .unknownOp
  • 当 op == "/" 且 b == 0 时,抛出 .divideByZero
  • 否则返回整数结果

读取一行输入:一组以逗号分隔的 a:op:b 表达式。按顺序使用 do/catch 处理每个表达式。每个表达式打印一行:

  • 成功时打印 = <n>
  • 发生各类错误时,分别打印 parse error、div by zero 或 unknown op

打印完每个表达式对应的行后,再打印一行汇总信息:OK: <n>,其中包含成功的表达式数量。

对于输入 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4,输出为:

= 8
div by zero
parse error
unknown op
= 8
OK: 2

亲手试试

let exprs = readLine()!.components(separatedBy: ",")

// TODO: enum CalcError; func compute(...) throws -> Int;
// 循环处理每个 expr,用 do/try 和 print 输出结果;最后用 print 输出 'OK: <n>'

逻辑与流程中的所有课

自己练习: Swift 在线编辑器