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