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

C#数组插入超过5个元素触发IndexOutOfRange异常原因求解

问题根因

  • C# 中的数组是固定长度容器,初始化完成后长度无法修改
  • 代码中在接收用户输入的长度之前,就已经将数组初始化为固定长度5:int[] array = new int[5];
  • 当输入的quant值大于5时,循环变量i会取到5及以上的数值,而长度为5的数组合法索引范围仅为0~4,访问array[5]就会触发IndexOutOfRange异常
  • 额外注意:你最后一行输出代码的占位符写法有误,Console.WriteLine("\n", array[i]);不会打印出数组元素值,需要调整为带占位符的写法。

修复方案

方案1:先读取长度再初始化数组

将数组初始化逻辑移到读取quant之后即可适配输入的长度:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Declare the array size");// 输入6
        int quant = int.Parse(Console.ReadLine());
        // 拿到用户输入的长度后再初始化数组
        int[] array = new int[quant];

        for (int i = 0; i < quant; i++)            
        {
            Console.WriteLine("Fill in the {0}º value ", i+1);
            int number = int.Parse(Console.ReadLine());
            array[i] = number;
        }

        for (int i=0; i< quant; i++)
        {
           Console.WriteLine(array[i]);
        }
    }
}

方案2:使用可变长度的List<int>替代数组

如果需要后续动态增减元素,使用List<int>更灵活,无需提前指定长度:

class Program
{
    static void Main(string[] args)
    {
        List<int> numList = new List<int>();
        
        Console.WriteLine("Declare the array size");// 输入6
        int quant = int.Parse(Console.ReadLine());

        for (int i = 0; i < quant; i++)            
        {
            Console.WriteLine("Fill in the {0}º value ", i+1);
            int number = int.Parse(Console.ReadLine());
            numList.Add(number);
        }

        foreach (int num in numList)
        {
           Console.WriteLine(num);
        }
    }
}

内容的提问来源于stack exchange,提问作者Lourence Queiróz Fófano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:04