Java 将一维阵列转换为二维阵列

Java 将一维阵列转换为二维阵列,java,arrays,Java,Arrays,我试图获取一个包含400个整数的数组,并将其拆分为一个20x20二维数组。我认为我的算法是正确的,但是一维数组的和与二维数组的和不匹配,所以我显然做错了什么。这是我的密码: private static void processArray(int[] inArray) { int[][] array = new int[20][20]; for (int x = 0; x < 20; x++) { for (int y = 0; y < 20

我试图获取一个包含400个整数的数组,并将其拆分为一个20x20二维数组。我认为我的算法是正确的,但是一维数组的和与二维数组的和不匹配,所以我显然做错了什么。这是我的密码:

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            for (int z = 0; z < 400; z++)
            {
                array[x][y] = inArray[z];
            }
        }
    }
}

我做错了什么

将输入数组中的最后一个元素分配给输出数组中的每个元素。必须将输入数组上的内部循环更改为拾取正确输入元素的单个赋值

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            array[x][y] = inArray[x * 20 + y];  // or devise your own calculation
        }
    }
}

将输入数组中的最后一个元素分配给输出数组中的每个元素。必须将输入数组上的内部循环更改为拾取正确输入元素的单个赋值

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            array[x][y] = inArray[x * 20 + y];  // or devise your own calculation
        }
    }
}
对于每对x和y,代码将从inArray到数组[x][y]的每个值赋值。这显然是错误的

以下是修复代码的一种方法:

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0, z = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            array[x][y] = inArray[z++];
        }
    }
}
对于每对x和y,代码将从inArray到数组[x][y]的每个值赋值。这显然是错误的

以下是修复代码的一种方法:

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0, z = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            array[x][y] = inArray[z++];
        }
    }
}

当前方法将使用原始数组中的最后一个元素分配数组中的每个元素

在相同的循环中,不应迭代z,而应将其用作计数器

int z = 0;
for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
                array[x][y] = inArray[z++];
        }
    }

当前方法将使用原始数组中的最后一个元素分配数组中的每个元素

在相同的循环中,不应迭代z,而应将其用作计数器

int z = 0;
for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
                array[x][y] = inArray[z++];
        }
    }

基本上是将数组[x][y]赋值为等于inArray[0],然后是inArray[1],然后是inArray[2],一直到[400]

我会做类似的事情

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            array[x][y] = inArray[x * 20 + y];
        }
    }
}

基本上是将数组[x][y]赋值为等于inArray[0],然后是inArray[1],然后是inArray[2],一直到[400]

我会做类似的事情

private static void processArray(int[] inArray)
{
    int[][] array = new int[20][20];

    for (int x = 0; x < 20; x++)
    {
        for (int y = 0; y < 20; y++)
        {
            array[x][y] = inArray[x * 20 + y];
        }
    }
}