我有一个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]);
}
}
这几乎只是在翻转循环。