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

时间:2014-12-23 13:34:18

标签: 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;
}

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

2 个答案:

答案 0 :(得分: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;
}

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

如果你记得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;
}

答案 1 :(得分:1)

二维数组是一个数组数组。您必须首先创建二维数组,然后单独创建每个元素:

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;
}