如果矩阵中的任何行或列都为零,我正在编写一些代码来将矩阵的行和列中的所有值设置为零。
在我的代码中,我已将元素复制到另一个名为copy[][]
的数组中,并修改了copy[][]
中的元素,从而保持实际数组array[][]
不被修改。
但是,我可以看到即使array[][]
正在修改。我可以看到调试模式期间array[][]
中元素的值发生了变化,但我一直无法弄清楚这是怎么回事。
有人可以帮忙吗?
供参考,以下是我正在处理的代码:
import java.util.Arrays;
import java.util.Scanner;
public class MatrixZero {
static int copy[][];
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Enter the number of rows and columns: ");
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
System.out.println("Enter the elements of the matrix:");
int array[][] = new int[m][n];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
array[i][j] = scanner.nextInt();
}
}
//copy the array to another array
copy = Arrays.copyOf(array,array.length);
System.out.println("The array copied is: ");
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
System.out.print(copy[i][j]+" ");
}
System.out.println("\n");
}
//Code to make the entire row and column of a matrix zero if
//any one element is zero
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(array[i][j]==0){
//call a method to make the entire row and column zero
makeZero(i, j,n);
}
}
}
System.out.println("The final matrix: ");
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
System.out.print(copy[i][j]+" ");
}
System.out.println("\n");
}
scanner.close();
}
public static void makeZero(int row,int column,int n){
for(int i=0;i<n;i++){
copy[row][i] = 0;
//copy[i][column] = 0;
}
for(int i=0;i<n;i++){
copy[i][column] = 0;
}
}
}