锯齿状数组中的行数比预期少1

时间:2019-03-30 07:50:58

标签: c# jagged-arrays

在打印此锯齿状数组时,我得到的行数比预期少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] + " ");
            }
        }

3 个答案:

答案 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