我正在编写一个创建二维数组的程序,用随机数填充它然后执行某些操作。
我的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);
}
答案 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];
}
}
}