gpt4 book ai didi

rust - 试图从循环外部借用变量绑定(bind)

转载 作者:行者123 更新时间:2023-11-29 08:03:06 25 4
gpt4 key购买 nike

我正在用 Rust 重写我的 Java 课本中的一个普通计算器。它使用一个循环来请求多个输入,但我认为我遇到了所有权问题(因为循环中有一个 let grade),所以我试图更好地理解.

当我在循环外声明 grade 时,只记录第一个输入值:无论输入如何,每个后续 grade 值都变为 0。如果我在循环内声明 grade,每个输入值都会被正确记录。

有没有一种方法可以让我在循环外声明 grade 并让这个小程序继续工作?

use std::io;

fn main() {
let mut total: u32 = 0;
let mut count: u32 = 0;
let mut grade = String::new(); //This one

while count < 5 {
println!("Enter number:");

io::stdin().read_line(&mut grade)
.expect("failed.");

let grade: u32 = match grade.trim().parse() {
Ok(num) => num,
Err(_) => 0,
};

total = total + grade;
count = count + 1;
}
println!("Tot: {}\nAvg: {}", total, total as f64/count as f64);
}

最佳答案

read_line appends 您正在读入的字符串,因此如果您输入 1 然后输入 2,grade 将包含 1\n2 或类似的东西。这不能被解析为整数,所以下面的匹配将始终返回 0。解决方案是在读取之前清空字符串:grade.clear();

关于rust - 试图从循环外部借用变量绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39004011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com