C#二维int数组,Sum off所有元素

时间:2016-07-08 13:08:53

标签: c# arrays

我试图制作一个对数组中的元素求和的程序。但我在MVS上有' System.IndexOutOfRangeException '错误。有人能说出我的错误吗?

public static int Sum(int[,] arr)
{
    int total = 0;
    for (int i = 0; i <= arr.Length; i++)
    {
        for (int j = 0; j <= arr.Length; j++)
        {
            total += arr[i,j];
        }
    }
    return total;
}

static void Main(string[] args)
{
    int[,] arr = { { 1, 3 }, { 0, -11 } };
    int total = Sum(arr);

    Console.WriteLine(total);
    Console.ReadKey(); 
}

3 个答案:

答案 0 :(得分:6)

您必须获取每个维度的长度(2D数组的Length属性是数组中的项目总数),比较应为<,而不是{{1} }

<=

或者您可以使用for (int i = 0; i < arr.GetLength(0); i++) { for (int j = 0; j < arr.GetLength(1); j++) { total += arr[i,j]; } } 循环

foreach

甚至Linq

foreach (int item in arr)
{
    total += item;
}

答案 1 :(得分:5)

尝试 Linq

  int[,] arr = { { 1, 3 }, { 0, -11 } };

  int total = arr.OfType<int>().Sum();

Non Linq解决方案:

  int total = 0;

  foreach (var item in arr)
    total += item;

答案 2 :(得分:0)

问题是你的循环正在检查&lt; =并且它们应该是&lt; 由于它们是零索引数组,因此检查&lt; = arr.Length将始终导致索引超出范围异常。