我正在尝试创建一个打印出时间表的数组。第一列是1次表,第二列是2次表,依此类推。系统会要求用户输入以确定行数和列数。 我想使用foreach循环以矩阵格式打印数组。当我使用for循环时,它工作正常,但我想知道如何使用foreach循环实现相同的输出。
显示的是代码:
int rows;
int columns;
Console.WriteLine("Enter the number of rows");
rows = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter the number of columns");
columns = Convert.ToInt32(Console.ReadLine());
int[,] multiDim = new int[rows, columns];
for (int p = 0; p < multiDim.GetLength(0); p++)
{
for (int k = 0; k < multiDim.GetLength(1); k++)
{
multiDim[p, k] = (p + 1) * (k + 1);
}
Console.WriteLine();
Console.ReadLine();
}
foreach (int i in multiDim)
{
Console.Write(i + " ");
if (i == multiDim.GetLength(1))
{
Console.WriteLine();
}
}
Console.ReadLine();
当我输入大于2的行的值时,程序不会以正确的数组格式打印数组。例如,当我有3行和5列时,输出为:
1 2 3 4 5
2 4 6 8 10 3 6 9 12 15
我读过类似的问题,但他们似乎没有帮助。感谢所有的帮助。谢谢。
答案 0 :(得分:1)
您的代码循环遍历数组的值,而不是索引。这意味着它恰好在最初工作,因为你的价值观很好。
我建议切换到使用Jagged Arrays而不是多维数组。这样您就可以foreach (row in multiDim)
,然后foreach (cell in row)
如果您仍然需要使用多维数组,那么您需要某种形式的计数器来跟踪您所在阵列的位置。这就是为什么常规for循环更适合用于此场景而不是foreach循环。