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