Menu
CoddyTech

移除任务

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

challenge icon

挑战

简单

你会收到 3 个输入:第一个是由逗号分隔的现有任务列表;第二个是要移除的任务编号(从 1 开始计数);第三个是移除后要添加的新任务。读取所有输入,从任务中创建一个向量,移除指定任务,添加新任务,然后显示更新后的任务列表。

要求:

  • 读取第一个输入,其中包含由逗号分隔的任务描述(例如:Buy groceries,Call dentist,Finish homework)
  • 按逗号拆分字符串,获取各个任务
  • 创建一个可变向量,并将每个任务添加到其中
  • 读取第二个输入,并将其转换为整数(要移除的任务编号,使用从 1 开始的索引)
  • 将从 1 开始的索引转换为从 0 开始的索引,并使用 .remove() 移除该索引处的任务
  • 读取第三个输入,其中包含要添加的新任务
  • 使用 .push() 将新任务添加到向量中
  • 按以下格式打印任务总数:Total tasks: X
  • 按以下格式逐行打印每个任务:Task: [task description]

输入:

  • 第一行:由逗号分隔的任务描述(例如:Buy groceries,Call dentist,Finish homework)
  • 第二行:表示要移除的任务编号的整数(从 1 开始计数)
  • 第三行:要添加的新任务(例如:Study for exam)

输出:

  • 第一行:Total tasks: X,其中 X 是移除并添加任务后的任务总数
  • 后续各行:每个任务按 Task: [task description] 的格式打印

亲手试试

use std::io::{self, BufRead};

fn main() {
    let stdin = io::stdin();
    let mut lines = stdin.lock().lines();
    
    // 读取用逗号分隔的任务
    let tasks_input = lines.next().unwrap().unwrap();
    
    // 读取要删除的任务编号(索引从 1 开始)
    let task_to_remove = lines.next().unwrap().unwrap();
    let task_number: usize = task_to_remove.trim().parse().unwrap();
    
    // 读取要添加的新任务
    let new_task = lines.next().unwrap().unwrap();
    
    // TODO: 在下方编写你的代码
    // 按逗号拆分 tasks_input,并创建一个可变向量
    // 删除指定索引处的任务(将从 1 开始的索引转换为从 0 开始的索引)
    // 将新任务添加到向量中
    
    // 输出结果
    // 按以下格式打印任务总数:Total tasks: X
    // 按以下格式打印每个任务:Task: [task description]
}

逻辑与流程中的所有课

自己练习: Rust 在线编译器