Java-2D数组-无法使用增强循环?

时间:2018-08-13 23:58:00

标签: java arrays for-loop 2d

    public static int berekenSomElementenIdentiekRijKolom(int[][] a) {
        int som = 0;
//        for (int i = 0; i < a.length; i++) {
//            for (int j = 0; j < a.length; j++) {
//                if ( i == j ) {
//                    som += a[i][j];
//                }               
//            }
//
//        }
//        return som;
//    }

    for (int[] rij : a){
        for (int[] kol :a){
            if (rij == kol){
                som+= int[rij][kol];
            }
        }

    } 
    return som;
}

所以这是我正在处理的代码。 如果行索引等于列索引,则目标很简单。正常的循环工作,但我无法将其转换为增强的循环。 我听说它有时不起作用,我也不会接受。

1 个答案:

答案 0 :(得分:5)

无法在增强型for循环中获取索引。您必须自己跟踪位置:

int i = 0;
for (int[] rij : a) {
    int j = 0;
    for (int kol : rij) {
        if (i == j) {
            som += kol;
        }
        j++;
    }
    i++;
}

我认为很明显,原来的方法更可取。

但是,实际上没有理由首先遍历整个矩阵。这是一个更简单的解决方案:

for (int i = 0; i < a.length; i++) {
    if (i < a[i].length) {
        som += a[i][i];
    }
}