兩段幾乎相同的取款邏輯,分別遍歷 userGroup 集合與單個 u 對象,僅變量名不同,導致代碼冗餘。
將核心邏輯封裝為獨立方法,參數化差異部分:
private void Withdraw(User user) {
Console.WriteLine("請輸入賬號");
string id = Console.ReadLine();
Console.WriteLine("請輸入密碼");
string pwd = Console.ReadLine();
if (id.Equals(user.idC) && pwd.Equals(user.pwd)) {
Console.WriteLine("請輸入要取得的金額");
double amount = double.Parse(Console.ReadLine());
if (amount <= user.banlance && amount != 0) {
user.banlance -= amount;
Console.WriteLine("余額:{0}", user.banlance);
} else {
Console.WriteLine("金額輸入有誤!");
}
} else {
Console.WriteLine("密碼錯誤!");
DrawMoney(); // 遞歸或循環
}
}
// 調用示例
foreach (var user in userGroup) Withdraw(user);
// 或
Withdraw(u);
if 判斷區分場景。