将单个数组返回多维数组

时间:2018-10-12 00:04:36

标签: java arrays methods return

全面披露;我需要知道这一点。我想从方法将单个数组返回到多维数组。通过将以下代码返回到另一个一维数组,然后使用for循环来传递值,从而避免了以下代码的问题。

public class test 
{
    public static void main ( String args[] )
    {
        int[][] array1 = new int [100][5];
        int[] temp = new int [5];
        int num = 0;

        temp = setValue();

        for (int i = 0; i<=4; i++) // cycle 1
        {
            array1[num][i]= temp[i];
        }

        System.out.format("\n\n");

    }

    public static int[] setValue()
    {
        int[] array3 = new int [5];

        for (int i = 0; i<=4; i++)
        {
            array3[i]= 2;
        }

        return array3;
    }
}

是否有更常规的方式将array3返回到不具有循环1的array1?类似于

array1[num][] = setValue();

2 个答案:

答案 0 :(得分:3)

评论:

  • 该方法返回一个新数组,因此无需初始化temp,或者最好将其初始化为返回值:

    int[] temp = setValue();
    
  • Java没有二维数组,只有二维数组,因此可以替换整个内部数组,而无需复制值:

    for (int i = 0; i <= 4; i++) // cycle 1
    {
    array1[num] = temp;
    }

  • 这样做时,您不应该分配内部数组,即将[5]替换为[]

    int[][] array1 = new int[100][];
    
  • 现在,实际上不再需要temp,只需main

    int[][] array1 = new int[100][];
    int num = 0;
    
    array1[num] = setValue();
    
  • 因为您可能想填充整个2D数组:

    int[][] array1 = new int[100][];
    
    for (int num = 0; num < array1.length; num++) {
        array1[num] = setValue();
    }
    

答案 1 :(得分:2)

正如@VinceEmigh上面所暗示的,您只需执行array1[num] = setValue();

请参见

int arr[][] = new int[5][];

for (int x = 0; x < arr.length; x++) {
    arr[x] = setValue();
}
for (int x = 0; x < arr.length; x++) {
    for (int y = 0; y < arr[x].length; y++) {
        System.out.println(arr[x][y]);
    }
}