C#控制台整数数组处理功能开发与代码bug排查
功能需求
开发控制台应用程序,需实现以下核心逻辑:
- 接收用户输入的整数类型数值并存入数组
- 计算数组内数值的总和、最小值、最大值
- 将处理完成的数值有序打印到控制台
现有代码问题说明
已完成数值录入、数组去重、排序输出的基础逻辑,目前存在3个待修复/补充的点:
- 输入提示逻辑顺序错误:当前代码先读取用户输入,再打印序号提示,首次输入无对应引导,交互逻辑反向
- 无输入合法性校验:用户输入非整数、小于等于0的数组长度时,程序会直接抛出异常崩溃
- 缺失核心计算模块:未实现总和、最小值、最大值的计算与输出逻辑
修复后完整代码
using System; using System.Linq; // 必须引用此命名空间,才能使用Distinct、Sum、Min、Max等扩展方法 class Program { static void Main() { int k; // 校验数组长度输入合法性 while (true) { Console.WriteLine("\n 请输入要录入的数字总个数:\n"); if (!int.TryParse(Console.ReadLine(), out k) || k <= 0) { Console.WriteLine(" 输入无效,请输入大于0的正整数!"); continue; } break; } Console.WriteLine(" 请开始输入数字:"); int[] myArray = new int[k]; // 修复输入提示顺序,增加单数字输入校验 for (int i = 0; i < k; i++) { int inputNum; while (true) { Console.Write($" 第 {i+1} 个数字:"); if (!int.TryParse(Console.ReadLine(), out inputNum)) { Console.WriteLine(" 输入无效,请输入整数类型数值!"); continue; } break; } myArray[i] = inputNum; if (i != k-1) { Console.WriteLine(" 已记录,请输入下一个数字:"); } } // 数组去重 int[] newArray = myArray.Distinct().ToArray(); // 数组排序 Array.Sort(newArray); Console.WriteLine("\n 去重并排序后的数字为:"); foreach (int num in newArray) { Console.Write(" | " + num); } Console.Write(" |"); // 补充计算逻辑:如果需要基于原始输入数组(包含重复值)计算,将下方的newArray替换为myArray即可 int sum = newArray.Sum(); int minVal = newArray.Min(); int maxVal = newArray.Max(); // 输出计算结果 Console.WriteLine("\n\n 统计结果:"); Console.WriteLine($" 数组总和:{sum}"); Console.WriteLine($" 最小值:{minVal}"); Console.WriteLine($" 最大值:{maxVal}"); } }
补充说明
- 上述代码默认基于去重排序后的数组计算总和、最值,如果需要统计用户原始输入(包含重复值)的计算结果,只需将
Sum()、Min()、Max()方法的调用对象从newArray改为原始数组myArray即可 - 增加的两层输入校验逻辑可以避免用户非法输入导致的程序崩溃,不需要额外写try-catch异常捕获
内容的提问来源于stack exchange,提问作者Molzard
相关产品推荐
相关产品推荐

