好的,所以我在朋友的帮助下编写了此代码,以“删除”矩阵的行,但是我真的不理解“ for”的含义,有人可以向我解释为什么这样做吗?
编辑:好的,所以我不了解这两个循环的工作方式
public static double [][] removeRow(double [][] m , int n){
double [][] finalm = new double [m.length-1][m[0].length];
for (int i = 0; i<finalm.length; i++) {
for (int j = 0; j<finalm[i].length; j++) {
if (i<n) {
finalm[i][j]=m[i][j];
}
if (i>=n) {
finalm[i][j]=m[i+1][j];
}
}
}
return finalm;
}
public static void main(String[] args) {
double [][] m = {{1,2,3},{1,9,2},{0,6,3}};
double [][] result = removeRow(m,0);
for (int i = 0; i<result.length; i++) {
for (int j = 0; j<result[i].length; j++) {
System.out.println(result[i][j]);
}
}
}
}
答案 0 :(得分:4)
图片Array
:
0, 0, 0, 0
1, 1, 1, 1
2, 2, 2, 2 <----- n
3, 3, 3, 3
n
是2的地方。
该方法构造一个空Array
并少一行:
0, 0, 0, 0
0, 0, 0, 0
0, 0, 0, 0
然后在每个循环中循环,如果索引小于n
,则将其复制到第二个Array
。因此,将复制第一行和第二行:
0, 0, 0, 0
1, 1, 1, 1
0, 0, 0, 0
然后,如果索引等于或大于n
,它将把行从索引+ 1复制到第二个Array
:
//Skips the row 2, 2, 2, 2
0, 0, 0, 0
1, 1, 1, 1
3, 3, 3, 3
还要注意,由于我们要复制整个行,因此不需要内部循环。我们可以简单地做到:
public static double [][] removeRow(double [][] m , int n){
double [][] finalm = new double [m.length-1][m[0].length];
for (int i = 0; i<finalm.length; i++) {
if (i<n) {
finalm[i]=m[i];
}
if (i>=n) {
finalm[i]=m[i+1];
}
}
return finalm;
}