C#并行数组中如何让布尔方法返回结果并附带提示信息?
核心问题分析
isEmpty方法冗余变量与逻辑混乱:方法内定义的balance1、balance2、balance3完全多余,均重复判断同一个入参balance == 0,且命名与外部变量冲突易混淆。最终返回的balance1 || balance2 || balance3等价于balance == 0,逻辑本身无错,但重复输出是调用方式导致的。- 重复输出的根源:你用
Console.WriteLine(isEmpty(balanceX))调用方法,而isEmpty内部已通过Console.WriteLine输出提示,导致每次调用先输出方法内的提示,再输出返回值,出现重复内容。 - 数组初始化冗余:先声明长度为2的数组,再重新赋值为长度3的数组,属于无效冗余操作。
修正后的代码
// 直接初始化正确长度的并行数组 string[] customerName = { "John Doe", "Jane Doe", "John Smith" }; int[] bankAccount = { 123456, 654321, 987654 }; double[] balance = { 100.00, 200.00, 0.00 }; // 加入0余额测试用例 // 打印客户信息 for (int i = 0; i < customerName.Length; i++) { Console.WriteLine($"{customerName[i]}\tAccount Number: {bankAccount[i]}\tBalance: ${balance[i]:F2}"); } // 调用isEmpty方法,直接调用避免重复输出 isEmpty(balance[0]); isEmpty(balance[1]); isEmpty(balance[2]); // 修正后的isEmpty方法 bool isEmpty(double balance) { // 若需包含负数判断,改为 balance <= 0.00 if (balance == 0.00) { Console.WriteLine("The balance is empty"); return true; } else { Console.WriteLine("The balance is not empty"); return false; } } // 存款方法部分 double deposit = 200.00; double deposit1 = 300.00; double deposit2 = 400.00; Console.WriteLine(Deposit(customerName[0], balance[0], deposit)); Console.WriteLine(Deposit(customerName[1], balance[1], deposit1)); Console.WriteLine(Deposit(customerName[2], balance[2], deposit2)); string Deposit(string customerName, double balance, double deposit) { double newBalance = balance + deposit; return $"{customerName} deposited ${deposit:F2} and the new balance is ${newBalance:F2}"; }
关键修正点说明
- 简化
isEmpty方法:移除冗余变量,直接根据判断结果返回布尔值并输出对应提示,逻辑清晰无歧义。 - 调整调用方式:直接调用
isEmpty(balanceX),避免用Console.WriteLine包裹,消除重复输出。 - 优化数组初始化:一步完成数组初始化,去掉无效的先声明长度再赋值的操作。
- 规范格式化输出:用字符串插值和
F2格式符确保金额保留两位小数,输出更规整。 - 添加测试用例:在余额数组中加入
0.00数据,便于验证方法正确性。
内容的提问来源于stack exchange,提问作者user19888755
相关产品推荐
相关产品推荐

