按列读取二维数组



我有一个2D数组,每个索引处都有一个字符串,例如:

+-----+-----+-----+
|  h  |  l  |  o  |
+-----+-----+-----+
|  e  |  l  |  *  |
+-----+-----+-----+

我知道你可以通过索引(0,0(、(0,1(、

for (int k = 0; k < transpositionMatrix.length; k++) {
    for (int k2 = 0; k2 < transpositionMatrix[k].length; k2++) {
        System.out.print(transpositionMatrix[k][k2]);
    }
}

然而,我想通过索引(0,0(、(1,0(、(2,0(访问元素。。。(n,0(,(0,1(,(0,2(。。。(0,m(,其中n是行数,m是行m处的列数。

换句话说,我想"向下"阅读每一列,而不是每一行。

以上面的2D数组为例,向下读取每一列将打印"hello*",而跨行读取将打印"hloel*"。我想实现前者。

如何使用Java实现这一点?

请注意,假设所有行的长度相同。

访问您要查找的数组的方法称为Column Major排序。请参阅维基百科,了解列主要和行主要排序之间的区别。

为了解决您的问题,在外部for循环更改列编号之前,内部for循环应该遍历所有行。

for循环将如下所示:

for (int column = 0; column < transpositionMatrix[0].length; column++) {
    for (int row = 0; row < transpositionMatrix.length; row++) {
        System.out.print(transpositionMatrix[row][column]);
    }
}
for (int k = 0; k < transpositionMatrix.length[0]; k++) {
    for (int k2 = 0; k2 < transpositionMatrix.length; k2++) {
        System.out.print(transpositionMatrix[k2][k]);
    }
}

这几乎只是在翻转循环。

相关内容

  • 没有找到相关文章

最新更新