2
我正在使用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的内容。顶尖! – pithonsmear