Java 如何使用单个循环运行二维阵列?
我想知道我是否可以用一个循环而不是两个循环来写这个东西Java 如何使用单个循环运行二维阵列?,java,loops,for-loop,matrix,2d,Java,Loops,For Loop,Matrix,2d,我想知道我是否可以用一个循环而不是两个循环来写这个东西 for (int row = 0; row < matrix.length; row++) { for (int col = 0; col < matrix[0].length; col++) { if ((row + col) % 2 == 0) { System.out.print(matrix[row][col] + ", ");
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[0].length; col++) {
if ((row + col) % 2 == 0) {
System.out.print(matrix[row][col] + ", ");
sum += matrix[row][col];
}
}
System.out.println("with a sum of " + sum);
}
for(int row=0;row
实际上,忽略循环的主体。。这完全不相关,我完全不知道我为什么要把它包括进去。。我的问题是如何将这两个for
循环组合起来
如果可能的话,保持简单。谢谢大家! 你可以,尽管效率很低:
for(int i = 0 ; i < matrix.length * matrix[0].length ; i++)
sum += matrix[i % matrix.length][i / matrix.length];
这个描述将是完整的,例如,[0,matrix.length*matrix[0].length)
中的每个z
将识别一对索引,因此我们可以在这里使用它。是我最初的想法。但是有一个小小的限制,您需要一个矩形二维数组(即,子数组的长度都相同)。如果要对“矩阵”进行建模,可能会出现这种情况,但更一般地说,您可能希望将非矩形数组相加
解决这一问题的方法是这样做:
for (int r = 0, c = 0; r < matrix.length;) {
if (c < matrix[r].length) {
sum += matrix[r][c];
++c;
} else {
c = 0;
++r;
}
}
for(int r=0,c=0;r
虽然有点乱,我还是选择嵌套循环
for (int r = 0, c = 0; r < matrix.length;) {
if (c < matrix[r].length) {
sum += matrix[r][c];
++c;
} else {
c = 0;
++r;
}
}