Menu
CoddyTech

回顾:安全的除法函数

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

challenge icon

挑战

简单

你会收到两个输入。第一个输入是表示被除数的数字,第二个输入是表示除数的数字。创建一个函数 safe_divide,它接收两个 f64 参数,并返回 Result<f64, &'static str>。当除数为零时,函数应返回 Err("Cannot divide by zero");否则,返回包含除法结果的 Ok。使用 match 表达式处理结果,并打印相应的输出。

要求:

  • 读取第一个输入(被除数)并去除空白字符
  • 将第一个输入解析为 f64
  • 读取第二个输入(除数)并去除空白字符
  • 将第二个输入解析为 f64
  • 创建一个函数 safe_divide,它接收两个 f64 参数,并返回 Result<f64, &'static str>
  • 在函数内部,检查除数是否为 0.0:
    • 如果是,返回 Err("Cannot divide by zero")
    • 如果不是,返回 Ok(dividend / divisor)
  • 使用解析后的两个数字调用该函数
  • 使用 match 表达式处理 Result
  • 在 Ok(value) 分支中,打印:Division result: [value]
  • 在 Err(error) 分支中,打印:Error: [error]

输入:

  • 第一行:表示被除数的数字(例如,20.0)
  • 第二行:表示除数的数字(例如,4.0)

输出:

  • 如果除法成功:Division result: [result]
  • 如果除数为零:Error: Cannot divide by zero

亲手试试

use std::io;

// TODO:在这里创建 safe_divide 函数
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
//     在这里编写你的代码
// }

fn main() {
    // 读取第一个输入(dividend)
    let mut dividend_input = String::new();
    io::stdin().read_line(&mut dividend_input).expect("Failed to read line");
    let dividend: f64 = dividend_input.trim().parse().expect("Invalid number");
    
    // 读取第二个输入(divisor)
    let mut divisor_input = String::new();
    io::stdin().read_line(&mut divisor_input).expect("Failed to read line");
    let divisor: f64 = divisor_input.trim().parse().expect("Invalid number");
    
    // TODO:调用 safe_divide,并使用 match 处理 Result
    // 根据结果打印相应的输出
}

逻辑与流程中的所有课

自己练习: Rust 在线编译器