Arrays.copyof连接两个Arrays

时间:2017-08-13 02:30:32

标签: java arrays matrix multidimensional-array

如果矩阵中的任何行或列都为零,我正在编写一些代码来将矩阵的行和列中的所有值设置为零。

在我的代码中,我已将元素复制到另一个名为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;
    }
}

}

0 个答案:

没有答案