使用C#完成HackerRank的Mini Max Sum挑战遇编译错误求助
HackerRank Mini Max Sum挑战C#代码错误分析与修复
错误原因逐一解析
CS1503类型转换错误
你调用了Array.Sort(arr),但传入的arr是List<int>类型而非数组。Array.Sort()仅支持数组类型,List集合需要调用自身的Sort()方法。CS1061属性不存在错误
代码中用arr.Length获取元素数量,但List<int>没有Length属性,List集合的元素数量需要通过Count属性获取。CS8602空引用警告
编译器检测到arr可能为null,直接访问arr.Count或索引元素存在空引用风险。可以添加空值检查消除警告,若确认输入不会为空,也可使用!抑制警告(更推荐前者)。
修正后的代码
带输入有效性检查的版本
// 检查输入是否符合题目要求(Mini Max Sum需输入5个整数) if (arr == null || arr.Count != 5) { Console.WriteLine("Invalid input"); return; } // 对List进行排序 arr.Sort(); // 计算所有元素总和,将int转为long避免溢出 long totalSum = arr.Sum(x => (long)x); // 最小和:总和减去最大元素 long minSum = totalSum - arr[arr.Count - 1]; // 最大和:总和减去最小元素 long maxSum = totalSum - arr[0]; // 输出结果 Console.WriteLine($"{minSum} {maxSum}");
简化版本(确认输入合法时使用)
arr.Sort(); long totalSum = arr.Sum(x => (long)x); long minSum = totalSum - arr[arr.Count - 1]; long maxSum = totalSum - arr[0]; Console.WriteLine($"{minSum} {maxSum}");
内容的提问来源于stack exchange,提问作者samwel apeli
相关产品推荐
相关产品推荐

