移除任务
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 18 课,共 66 课。
挑战
简单你会收到 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 在线编译器