二维随机数组的总和

Sum of 2-d Random Array

我正在编写一个程序来创建一个二维数组,用随机数填充它,然后执行某些操作。

我的 SumArray() 方法应该有一个用于参数列表的二维数组,并将添加数组中的所有数字和 return 总和。我知道我现在拥有它的方式是错误的,我对如何做到这一点感到困惑。到目前为止,我在程序中的其他方法是否编码正确,或者它们是错误的并且不允许我执行程序的任务?

任何有关 SumArray() 方法的帮助或我在代码的其他部分遇到的任何问题,我们都将不胜感激!!谢谢!

当我 运行 我的程序时,我收到一个错误,指出索引超出了数组的范围!

这是我的代码:

static void Main(string[] args)
    {
        string[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
        string[,] randomNumArray = new string[3, 5];

        FillArray(randomNumArray);
        PrintArray(randomNumArray);
        SumRows(randomNumArray);
        SumCols(randomNumArray);
        SumArray(randomNumArray);

    }

    public static void FillArray(int[,] randomNumbersArray)
    {
        Random num = new Random();
        for (int r = 0; r < randomNumbersArray.GetLength(0); r++)
        {
            for (int c = 0; c < randomNumbersArray.GetLength(1); c++)
            {
                randomNumbersArray[r, c] = num.Next(15, 97);
            }
        }
    }

    public static void PrintArray(int[,] randomPrintArray)
    {
        for (int r = 0; r < randomPrintArray.GetLength(0); r++)
        {
            for (int c = 0; c < randomPrintArray.GetLength(1); r++)
            {
                Console.Write("{0}", randomPrintArray[r, c]);
            }
            Console.WriteLine();
        }
    }

    public static void SumRows(int[,] sumOfRowsArray)
    {
        int rowSum;
        for (int r = 0; r < sumOfRowsArray.GetLength(0); r++)
        {
            rowSum = 0;
            for (int c = 0; c < sumOfRowsArray.GetLength(1); c++)
            {
                rowSum += sumOfRowsArray[r, c];
            }
        }
    }

    public static void SumCols(int[,] sumOfColsArray)
    {
        int colsSum;
        for (int r = 0; r < sumOfColsArray.GetLength(1); r++)
        {
            colsSum = 0;

            for (int c = 0; c < sumOfColsArray.GetLength(0); c++)
            {
                colsSum += sumOfColsArray[r, c];
            }
        }
    }

    public static void SumArray(int[,] sumOfAllArray)
    {
        int sumOfAll 0;
        for (int r = 0; r < sumOfAllArray.GetLength(0); r++)
        {
            sumOfAll += sumOfAll;
            for (int c = 0; c < sumOfAllArray.GetLength(1); c++)
            {
                sumOfAll += sumOfAllArray[r, c];
            }
        }
        Console.Write(sumOfAll);
    }

我认为你不需要那个

sumOfAll += sumOfAll;

SumArray方法中。 如果我正确理解你的代码,在内部循环中你计算列总和,然后在下一次迭代中将它添加到自身?例如,在内部循环之后,第一列总和为 10。将 10 添加到自身,然后在遍历第二列之前,总和为 20。

正确代码:

public static void SumArray(int[,] sumOfAllArray)
{
    int sumOfAll;
    for (int r = 0; r < sumOfAllArray.GetLength(0); r++)
    {
        for (int c = 0; c < sumOfAllArray.GetLength(1); c++)
        {
            sumOfAll += sumOfAllArray[r, c];
        }
    }
}