如何在C#中添加用户输入值到集合并计算最大最小值?
解决方案
问题分析
你的代码存在几个关键问题:
- 数组初始化后用
+=赋值,这会把输入的数字和数组初始的0相加,而非替换成输入值; - C#的数组是固定长度的,没有
Append方法,无法动态添加元素; - 缺少
System.Linq命名空间,导致Min()和Max()方法无法调用; - 引用了不必要的
System.Data命名空间。
方案1:修正数组写法(固定输入数量)
如果确定要输入5个数,直接修正数组赋值逻辑并添加正确的命名空间即可:
using System; using System.Linq; // 必须引入才能使用Min/Max扩展方法 namespace ConsoleMinMax { class MinMaxValue { static void Main(String[] args) { int[] tableWithValue = new int[5]; // 初始化长度为5的空数组 int i = 0; for (; i < 5; i++) { Console.WriteLine("Enter a number:"); int number = Convert.ToInt32(Console.ReadLine()); tableWithValue[i] = number; // 直接赋值,替换数组元素默认值 } Console.WriteLine("Min value: " + tableWithValue.Min()); Console.WriteLine("Max value: " + tableWithValue.Max()); } } }
方案2:用List<int>动态添加元素(类似Python列表的Append)
如果需要动态添加元素(不确定输入数量),推荐使用List<int>,它的Add方法和Python的Append逻辑一致:
using System; using System.Collections.Generic; // 引入命名空间才能使用List using System.Linq; namespace ConsoleMinMax { class MinMaxValue { static void Main(String[] args) { List<int> numbers = new List<int>(); // 初始化空的动态列表 Console.WriteLine("Enter numbers (type 'exit' to stop input):"); string input; while ((input = Console.ReadLine()) != "exit") { // 用TryParse处理非数字输入,避免程序崩溃 if (int.TryParse(input, out int number)) { numbers.Add(number); // 动态添加元素,等同于Python的Append } else { Console.WriteLine("Invalid input, please enter a valid number or 'exit'."); } } // 确保列表不为空再计算最值 if (numbers.Count > 0) { Console.WriteLine("Min value: " + numbers.Min()); Console.WriteLine("Max value: " + numbers.Max()); } else { Console.WriteLine("No valid numbers were entered."); } } } }
关键知识点
- C#数组是固定长度结构,一旦创建无法改变大小,适合已知元素数量的场景;
List<T>是动态集合,支持随时添加/删除元素,Add方法对应Python的Append;Min()和Max()是Linq扩展方法,必须引入System.Linq命名空间才能使用;- 使用
int.TryParse替代Convert.ToInt32可以提升程序健壮性,处理用户的无效输入。
内容的提问来源于stack exchange,提问作者MattiusW
相关产品推荐
相关产品推荐

