You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建含整数列表的数组并按平均值排序输出,修复给定代码Bug

问题解决:按列表平均值排序并输出多列表数组

需求明确:创建存储多个List<int>的数组,计算每个列表的平均值,按平均值排序后输出所有列表。以下是针对原代码的Bug修复及完整逻辑补全:

核心Bug修复与逻辑补全

1. 修复PrintArray方法参数类型错误

原方法参数定义为List<int> listArray,但实际传入的是List<int>[]数组,导致遍历listArray[i]时得到int类型,无法用foreach遍历。需将参数改为List<int>[] listArray,同时简化循环逻辑,无需单独传入size。

2. 修复输入解析格式错误问题

直接使用Int32.Parse会在输入包含空字符串(如连续空格)或非数字字符时抛出异常,改用Int32.TryParse验证转换,同时用StringSplitOptions.RemoveEmptyEntries过滤拆分后的空项,避免无效输入干扰。

3. 补全按平均值排序的逻辑

使用LINQ的OrderBy方法,基于每个列表的平均值排序,同时处理空列表的边界情况(避免除以0异常)。

完整修正代码

using System;
using System.Collections.Generic;
using System.Linq;

class Solution
{
    public static void PrintArray(List<int>[] listArray)
    {
        foreach (var list in listArray)
        {
            // 用空格分隔输出当前列表的所有元素
            Console.WriteLine(string.Join(" ", list));
        }
    }

    public static void Main()
    {
        // 验证输入的列表数量有效性
        if (!int.TryParse(Console.ReadLine(), out int size) || size <= 0)
        {
            Console.WriteLine("请输入有效的正整数作为列表数量");
            return;
        }

        List<int>[] listArray = new List<int>[size];

        for (int i = 0; i < size; i++)
        {
            string line = Console.ReadLine();
            // 拆分输入并自动移除空字符串
            string[] data = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            List<int> list = new List<int>();

            foreach (string s in data)
            {
                // 仅转换有效的数字字符串
                if (int.TryParse(s, out int value))
                {
                    list.Add(value);
                }
            }

            // 直接将列表赋值给数组元素,无需额外复制操作
            listArray[i] = list;
        }

        // 按列表平均值排序,空列表默认平均值为0
        var sortedArray = listArray.OrderBy(list => 
            list.Count == 0 ? 0 : list.Average()
        ).ToArray();

        // 输出排序结果
        Console.WriteLine("排序后的列表:");
        PrintArray(sortedArray);
    }
}

关键说明

  • 参数类型修正:确保PrintArray方法能正确接收并遍历List<int>[]数组。
  • 输入安全处理:通过双重验证避免输入格式错误导致的程序崩溃。
  • 排序逻辑:结合LINQ实现简洁的平均值排序,同时处理空列表的边界场景。
  • 代码简化:移除不必要的列表复制与清空操作,直接赋值提升效率。

内容的提问来源于stack exchange,提问作者Hưng Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 11:17:38