按列读取2D数组

时间:2016-10-12 21:15:36

标签: java multidimensional-array

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

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

我知道你可以通过索引(0,0),(0,1),(0,2),(1,0)等打印数组,例如:

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的列数。

换句话说,我想阅读&#34; down&#34;每列而不是每行。

使用上面的2D数组作为示例,读下每列将打印&#34; hello *&#34;并且阅读每行将打印&#34; hloel *&#34;。我想实现前者。

如何使用Java完成?

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

2 个答案:

答案 0 :(得分:1)

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

它几乎只是在翻转for循环。

答案 1 :(得分:1)

访问您要查找的数组的方法称为Column-Major排序。有关Column-Major和Row-Major排序之间的区别,请参阅wikipedia

要解决您的问题,内部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]);
    }
}