使用基本命令在循环中复制2D数组

Dan*_*zer 2 java multidimensional-array

public static int[][] copyMatrix(int[][] matrix) 
{
    for (int i = 0; (i < matrix.length); i++)
    {
        int[][] duplicateMatrix = new int[matrix.length][matrix[i].length];

            for (int j = 0; (j < matrix[i].length); j++)
            {
                duplicateMatrix[i][j] = matrix[i][j];
            }
    }
    return duplicateMatrix;
}
Run Code Online (Sandbox Code Playgroud)

大家好,这个特定的功能似乎不起作用,因为duplicateMatrix没有初始化为变量,但我似乎无法初始化,因为它是在循环中创建的,我无法找到一种方法来生成列中需要的单元格数量.帮助将不胜感激.谢谢.

Era*_*ran 6

您应该在循环之前初始化数组,因为您只想初始化它一次.

public static int[][] copyMatrix(int[][] matrix) 
{
    if (matrix.length < 1) {
        return new int[0][0];
    }
    int[][] duplicateMatrix = new int[matrix.length][matrix[0].length];
    for (int i = 0; (i < matrix.length); i++)
    {
            for (int j = 0; (j < matrix[i].length); j++)
            {
                duplicateMatrix[i][j] = matrix[i][j];
            }
    }
    return duplicateMatrix;
}
Run Code Online (Sandbox Code Playgroud)

此代码假定输入数组中的所有行具有相同数量的元素(对于矩阵都是如此).

如果你记得2维数组只是一个数组数组,你可以放松这个假设:

public static int[][] copyMatrix(int[][] matrix) 
{
    int[][] duplicateMatrix = new int[matrix.length][];
    for (int i = 0; (i < matrix.length); i++)
    {
            duplicateMatrix[i] = new int[matrix[i].length];
            for (int j = 0; (j < matrix[i].length); j++)
            {
                duplicateMatrix[i][j] = matrix[i][j];
            }
    }
    return duplicateMatrix;
}
Run Code Online (Sandbox Code Playgroud)