我正在尝试创建一个二维矩阵,该矩阵将在表格中显示和排序。
我在用数字填充矩阵/数组时遇到问题。我不想在那里重复,因此创建了一个临时List
。
我尝试了多种方法来解决将索引num
添加到列表时出现的索引超出范围的异常,但是我不知道会发生什么。
我最初将所有变量都设置为static
,而该方法不需要。然后,我尝试将它们放入方法中,以查看如果变量不是static
会发生什么情况。
我将如何解决此错误? (全部在控制台应用程序中完成)
static int max;
static int max_row;
static int max_col;
//static int[,] matrixArray = new int[max_row, max_col];
//static List<int> list = new List<int>();
//Filling the matrix
public static void matrixFill(int[,] matrixArray, List<int> list)
{
for (int x = 0; x < max_row; x++)
{
for (int y = 0; y < max_col; y++)
{
Random rand = new Random();
int num = rand.Next(10, 100);
if (!list.Contains(num))
{
matrixArray[x, y] = num;
//Index error occurs here
list.Add(num);
}
else
{
y--;
}
}
}
}
//What is happening in the main method until the error
int[,] matrixArray = new int[max_row, max_col];
List<int> list = new List<int>();
Console.Write("Please enter matrix size: ");
Int32.TryParse(Console.ReadLine(), out max);
max_row = max;
max_col = max;
Console.WriteLine();
matrixFill(matrixArray, list);
答案 0 :(得分:0)
问题是您需要在设置max_row和max_col参数之前定义matrixArray的大小。
List<int> list = new List<int>();
Console.Write("Please enter matrix size: ");
Int32.TryParse(Console.ReadLine(), out max);
max_row = max;
max_col = max;
int[,] matrixArray = new int[max_row, max_col]; // move this here
相反,如上所述,将定义移动到要求用户提供最大大小之后,以使您创建的矩阵与期望的大小相同。