我有下面的例子,它打印一个连续数字的二维数组。
我的问题是我应该如何确定乘以 i 的数字 在下面的示例中(在这种情况下 3 ),以便打印连续数字的数组。
似乎总是i * [数组的第二维的长度] + j。
如果需要更多说明,请告诉我
public class test
{
static void Main(string[] args)
{
populate();
Console.ReadKey();
}
public static void populate()
{
int[,] matrix = new int[4, 3];
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
matrix[i, j] = i * 3 + j;
}
}
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
System.Console.WriteLine(matrix[i, j]);
}
}
}
}
答案 0 :(得分:1)
所以,大概这个想法最终会得到:
| 0 1 2 <-- j
------------
0 | 0, 1, 2
i -> 1 | 3, 4, 5
2 | 6, 7, 8
3 | 9, 10, 11
所以这是简单的数学。您的列为j
,您的行为i
。 j
将运行0,1,2。所以在你需要的第一行(i == 0
):
0 * 3 + 0 = 0, 0 * 3 + 1 = 1, 0 * 3 + 2 = 2
现在为您的下一行(i==1
),您需要从3 开始,然后将j
添加到其中。所以你得到:
1 * 3 + 0 = 3, 1 * 3 + 1 = 4, 1 * 3 + 2 = 5
对于第三行(i==2
),您需要从6开始,这只是行序数(2
)乘以每行的宽度( 3
),所以你得到:
2 * 3 + 0 = 6, 2 * 3 + 1 = 7, 2 * 3 + 2 = 8
现在,如果您的桌子更宽,而您需要,例如:
0, 1, 2, 3
4, 5, 6, 7
...
我希望现在很明显你的公式需要:
i * 4 + j
所以,是的,你乘以的数字是每行的宽度。这与第二个数组维度的长度相同。所以你可以把你的公式变成:
i * matrix.GetLength(1) * j