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

C#遍历数组求和时出现IndexOutOfRangeException越界异常

异常触发原因
  • foreach 语法遍历数组时,循环变量直接获取的是数组对应位置的元素值,不是元素的下标索引。
  • 本次测试用例中数组长度为6,合法索引范围是0~5,但输入的数组元素包含10、11两个大于5的值。代码中写的sum += arr[j]是把元素值当成索引去访问数组,当遍历到值为10的元素时,尝试访问arr[10],超出数组边界,直接抛出IndexOutOfRangeException索引越界异常。
  • 退一步说,就算数组所有元素值都在0~5的索引范围内,这个写法的计算逻辑也是错误的:比如遍历到第一个元素1时,累加的是arr[1]也就是第二个元素的值2,根本不是当前遍历到的元素,计算结果必然不符合预期。
修复方案

不需要通过索引二次访问数组,foreach 循环中直接累加循环变量拿到的元素值即可。
修复后的完整可运行代码:

public static void Main(string[] args)
{
    int n, sum = 0;
    n = Convert.ToInt32(Console.ReadLine());
    int[] arr = new int[n];

    for(int i = 0; i < n; i++)
    {
        arr[i] = Convert.ToInt32(Console.ReadLine());
    }

    foreach(int j in arr)
    {
        sum += j;
    }
    Console.WriteLine(sum);
}

如果更习惯用下标索引遍历数组,也可以把foreach部分替换为标准的for循环写法,效果一致:

for(int i = 0; i < arr.Length; i++)
{
    sum += arr[i];
}

运行修复后的代码,输入测试用例的6个数字,即可得到正确求和结果31。

内容的提问来源于stack exchange,提问作者CHARU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:06:08