在打印此锯齿状数组时,我得到的行数比预期少1。它应从第0个索引开始到第(h-1)个索引,创建总共h行。我在做什么错了?
h是否。行。
int h = int.Parse(Console.ReadLine());
int[][] arr = new int[h][];
for(int i = 0; i < h; ++i)
{
arr[i] = new int[i+1];
}
for(int i = 0; i < h; i++)
{
Console.WriteLine();
for(int j = 0; j < i; j++)
{
Console.Write(arr[i][j] + " ");
}
}
答案 0 :(得分:2)
那是因为您的内部for循环具有条件j < i
。如果第一遍i
为0,则不会传递内部for循环。
尝试
for(int j = 0; j < arr[i].Length; j++)
{
Console.Write(arr[i][j] + " ");
}
答案 1 :(得分:2)
数组的元素列表从1开始不断增长,因此,如果要扫描所有项目,则:
for(int i = 0; i < h; i++)
{
Console.WriteLine();
for(int j = 0; j < (i + 1); j++)
{
Console.Write(arr[i][j] + " ");
}
}
答案 2 :(得分:0)
应该不是:
new int[i];
代替:
new int[i+1]
还是h - 1
?只需更改数组的索引即可。
或者您需要j < arr[i].Length