好的,我尝试使用Length属性搜索二维数组(我必须使用它,否则我只使用GetLength())。此数组随机填充一组行数和列数。它将询问用户要搜索的数字,然后它将搜索数组并返回true或false并返回行和列的索引(如果找到该数字)。
我对我为完成for循环设置而进行的研究中的代码非常有信心,但目前我收到的错误表明"错误的索引数量里面[];预计2"当我尝试搜索数组的列时。
我已经看到了这个错误,而且我发现这应该是正确的设置。所以,我不确定我的问题在这个循环中的位置,有人可以看看让我知道我错过了哪一步吗?
谢谢!
int [,] math;
math = new int[3, 5]; //So you can see my array that is declared in main
static bool SearchArray(int search, int [,] array, out int row, out int coln)
{
row = -1;
coln = -1;
// search parameter is given from another method where it asks the user for a number to search for in the array.
for (int x = 0; x < array.Length; x++)
{
for (int y = 0; y < array[x].Length; y++) //error is here with the array[x] and continues to any reference I try to make similarly.
{
if (array[x][y] == search)
{
row = array[x];
coln = array[y];
return true;
}
}
}
return false
答案 0 :(得分:1)
有关多维数组(正如您在此处使用)和锯齿状数组(数组数组)之间差异的详细信息,请参阅this question。
如果你声明一个多维数组:
int [,] math = new int[3, 5];
您必须像这样访问其中的值:
int value = math[1,2];
如果声明一个锯齿状数组,如下所示:
int[][] math = new int[3][];
math[0] = new int[5];
math[1] = new int[5];
math[2] = new int[5];
(虽然子阵列的大小通常会有所不同 - 因此呈锯齿状。) 然后您可以访问值:
int value = math[1][2];
对于您的特定问题,如果使用多维数组,您还需要使用'Array.GetLength',如:
for (int x = 0; x < array.GetLength(0); x++)
获取零件的各个尺寸(如this question中所示)。在您的示例中,“。Length”为您提供了数组的总大小,而不是第一维的长度。
答案 1 :(得分:0)
您正在混合具有多维的锯齿状数组,实际上是二维数组。两个昏暗的解决方案。数组将是这样的:
static bool SearchArray(int search, int [,] array, out int row, out int coln)
{
row = -1;
coln = -1;
for (int x = 0; x < array.GetLength(0); x++)
{
for (int y = 0; y < array.GetLength(1); y++)
{
if (array[x,y] == search)
{
row = x;
coln = y;
return true;
}
}
}
return false
}