二维随机阵列的总和

时间:2015-04-21 18:52:06

标签: arrays for-loop multidimensional-array parameters variable-assignment

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

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

SumArray()方法的任何帮助或我在代码的其他部分遇到的任何问题都表示赞赏!!谢谢!

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

这是我的代码:

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);
    }

1 个答案:

答案 0 :(得分:0)

我认为你不需要那个

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];
        }
    }
}