为什么我无法打印出简单多维数组的内容?

问题描述 投票:0回答:1

// 下面是我从书上复制来练习的代码。 // 我想打印出多维数组的内容。

int[][] matrix = new int[4][];
matrix[0] = new int[2];
matrix[1] = new int[6];
matrix[2] = new int[4];
matrix[3] = new int[5];

for (int row = 0; row < matrix.Length; row++)
{
    for (int column = 0; column < matrix[row].Length; column++)
        Console.Write(matrix[row][column] + " "); // Each item in the row separated by spaces

    Console.WriteLine(); // Rows separated by lines

}

// 但结果是这样的:

  • 0 0
  • 0 0 0 0 0 0
  • 0 0 0 0
  • 0 0 0 0 0

//我以为应该打印:

  • 0, 2
  • 1, 6
  • 2, 4
  • 3, 5

我错过了什么?

c# multidimensional-array
1个回答
3
投票

首先,它不是一个多维数组,而是一个锯齿状数组(多维数组将是

int[,] matrix = new int[4,2];
,尽管它每行具有相同数量的元素)。

我错过了什么?

对于每个“行”,您将打印“行”中数组的元素,例如,

new int[2]
将创建用默认值初始化的2个整数的数组(对于
0
来说是
int
),因此打印它的元素将导致
0 0 
。这同样适用于其余的数组。

我以为应该打印:

TBH 不太清楚你为什么这么想。但以下应该给出与预期类似的结果(即当前行的索引和该行的数组长度):

for (int row = 0; row < matrix.Length; row++)
{
    Console.Write(row + " ");
    Console.Write(matrix[row].Length);

    Console.WriteLine(); // Rows separated by lines
}

或者带有字符串插值的较短版本:

for (int row = 0; row < matrix.Length; row++)
{
    Console.WriteLine($"{row} {matrix[row].Length}");
}
© www.soinside.com 2019 - 2024. All rights reserved.