我有一个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完成?
请注意,假设所有行的长度相同。
答案 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]);
}
}