Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用单个循环运行二维阵列?_Java_Loops_For Loop_Matrix_2d - Fatal编程技术网

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;
  }
}