Java 将二维数组元素从一个复制到另一个

Java 将二维数组元素从一个复制到另一个,java,matrix,Java,Matrix,我想从一个nxn矩阵中找到一个附加矩阵 e、 g矩阵为4x4 {0, 11, 15, 11}, {7, 0, 1 , 8}, {4, 19, 0 , 6}, {2, 3, 5, 0} 这是我的输出 矩阵一 Loop: 1 0 1 8 19 0 6 3 5 0 Loop: 2 7 1 8 4 0 6 2 5 0 Loop: 3 7 0 8 4 19 6 2 3 0 Loop: 4 7 0 1 4 19 0 2 3 5 Loop: 5 11 15 11 19 0 6 3 5 0

我想从一个nxn矩阵中找到一个附加矩阵

e、 g矩阵为4x4

{0,  11, 15, 11},
{7,  0, 1 , 8},
{4, 19, 0 , 6},
{2, 3, 5, 0}  
这是我的输出

矩阵一

Loop: 1
0 1 8 19 0 6 3 5 0 
Loop: 2
7 1 8 4 0 6 2 5 0 
Loop: 3
7 0 8 4 19 6 2 3 0 
Loop: 4
7 0 1 4 19 0 2 3 5 
Loop: 5
11 15 11 19 0 6 3 5 0 
Loop: 6
0 15 11 4 0 6 2 5 0 
Loop: 7
0 11 11 4 19 6 2 3 0 
Loop: 8
0 11 15 4 19 0 2 3 5 
Loop: 9
11 15 11 0 1 8 3 5 0 
Loop: 10
0 15 11 7 1 8 2 5 0 
Loop: 11
0 11 11 7 0 8 2 3 0 
Loop: 12
0 11 15 7 0 1 2 3 5 
Loop: 13
11 15 11 0 1 8 19 0 6 
Loop: 14
0 15 11 7 1 8 4 0 6 
Loop: 15
0 11 11 7 0 8 4 19 6 
Loop: 16
0 11 15 7 0 1 4 19 0 
我将值存储到另一个2darray(matrixTwo)中以计算行列式以找到逆矩阵,但发现存储在矩阵2中的内容与上面的输出不同。为什么存储的值不同?请帮忙

Matrix Two
Loop: 1
0 11 15 11 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 2
7 0 1 8 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 3
4 19 0 6 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 4
2 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 5
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 10
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 11
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 12
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 13
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 14
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Loop: 16
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0      
我的密码

public class Matrix {
    public static void main(String argv[]) {
        int matrix[][]= { {0,  11, 15, 11},
                           {7,  0, 1 , 8},
                           {4, 19, 0 , 6},
                           {2, 3, 5, 0} 
        };

        int matrixTwo[][] = new int[(matrix.length) * (matrix.length)][(matrix.length) * (matrix.length)];
        int ctr = 0;
        System.out.println("Matrix One");
        for(int i = 0; i < matrix.length; i++) {
            for(int j = 0; j < matrix.length; j++) {
                ctr++;
                System.out.println("\nLoop: " + ctr);
                for(int row = 0;row < matrix.length; row++) {
                    for(int col = 0; col < matrix[row].length; col++) {
                                    if(row != i && col != j) {
                                System.out.print(matrix[row][col] + " ");
                            matrixTwo[row][col] = matrix[row][col];
                    }
                }
            }           
        }
    }

    int ctrTwo = 0;
    System.out.println("\n\nMatrix Two");
    for(int row = 0; row < matrixTwo.length; row++) {
        ctrTwo++;
        System.out.println("Loop: " + ctrTwo);
        for(int col = 0; col < matrixTwo.length; col++) {
            System.out.print(matrixTwo[row][col] + " ");
        }
        System.out.println();
    }
}
公共类矩阵{
公共静态void main(字符串argv[]){
int矩阵[][]={{0,11,15,11},
{7,  0, 1 , 8},
{4, 19, 0 , 6},
{2, 3, 5, 0} 
};
int matrixTwo[][]=新int[(矩阵.长度)*(矩阵.长度)][(矩阵.长度)*(矩阵.长度)];
int ctr=0;
System.out.println(“矩阵一”);
对于(int i=0;i
现在,您只需将第一个矩阵复制到第二个矩阵中

下面是您可以看到的testclass:

public class test2 {

    int matrix[][] = { { 0, 11, 15, 11 }, { 7, 0, 1, 8 }, { 4, 19, 0, 6 },
            { 2, 3, 5, 0 } };

    int matrixTwo[][] = new int[(matrix.length) * (matrix.length)][(matrix.length)
            * (matrix.length)];

    public test2() {
        int ctr = 0;
        System.out.println("Matrix One");
        for (int row = 0; row < matrix.length; row++) {
            for (int col = 0; col < matrix.length; col++) {
                ctr++;
                System.out.println("\nLoop: " + ctr);
                for (int row1 = 0; row1 < matrix.length; row1++) {
                    for (int col1 = 0; col1 < matrix[row1].length; col1++) {
                        if (row1 != row && col1 != col) {
                            System.out.print(matrix[row1][col1] + " ");
                            matrixTwo[row1][col1] = matrix[row1][col1];
                        }
                    }
                }
            }
        }

        int ctrTwo = 0;
        System.out.println("\n\nMatrix Two");
        for (int row = 0; row < matrixTwo.length; row++) {
            ctrTwo++;
            System.out.println("Loop: " + ctrTwo);
            for (int col = 0; col < matrixTwo.length; col++) {
                System.out.print(matrixTwo[row][col] + " ");
            }
            System.out.println();
        }
        printArray(matrix);
        System.out.println();
        printArray(matrixTwo);
    }

    public void printArray(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.printf("%3d", matrix[i][j]);
            }
            System.out.println();
        }
    }

    public static void main(String argv[]) {
        new test2();

    }
}
matrixTwo:

  0 11 15 11  0  0  0  0  0  0  0  0  0  0  0  0
  7  0  1  8  0  0  0  0  0  0  0  0  0  0  0  0
  4 19  0  6  0  0  0  0  0  0  0  0  0  0  0  0
  2  3  5  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
这不是您想要做的。

想一想这行是怎么做的:
matrixTwo[row][col]=matrix[row][col];

这些是不同的,因为它们的打印顺序不同

比如,

从矩阵一

Loop: 1
0 1 8 19 0 6 3 5 0 
印刷品

Loop: 1
matrix[1][1] = 0 matrix[1][2] = 1 matrix[1][3] = 8 matrix[2][1] = 19 matrix[2][2] = 0 matrix[2][3] = 6 matrix[3][1] = 3 matrix[3][2] = 5 matrix[3][3] = 0 
来自matrixTwo

Loop: 1
0 11 15 11 0 0 0 0 0 0 0 0 0 0 0 0 
印刷品

Loop: 1
matrixTwo[0][0] = 0 matrixTwo[0][1] = 11 matrixTwo[0][2] = 15 matrixTwo[0][3] = 11 matrixTwo[0][4] = 0 matrixTwo[0][5] = 0 matrixTwo[0][6] = 0 matrixTwo[0][7] = 0 matrixTwo[0][8] = 0 matrixTwo[0][9] = 0 matrixTwo[0][10] = 0 matrixTwo[0][11] = 0 matrixTwo[0][12] = 0 matrixTwo[0][13] = 0 matrixTwo[0][14] = 0 matrixTwo[0][15] = 0 
使用
System.out.print(“矩阵[“+行+”][“+列+”]=“+矩阵[行][列]+”);
。您可以看到差异

Loop: 1
matrixTwo[0][0] = 0 matrixTwo[0][1] = 11 matrixTwo[0][2] = 15 matrixTwo[0][3] = 11 matrixTwo[0][4] = 0 matrixTwo[0][5] = 0 matrixTwo[0][6] = 0 matrixTwo[0][7] = 0 matrixTwo[0][8] = 0 matrixTwo[0][9] = 0 matrixTwo[0][10] = 0 matrixTwo[0][11] = 0 matrixTwo[0][12] = 0 matrixTwo[0][13] = 0 matrixTwo[0][14] = 0 matrixTwo[0][15] = 0