用函数返回的数组初始化的多维数组

时间:2017-06-05 13:33:48

标签: java multidimensional-array

我遇到以下示例的问题:

public static void main(String[] args) {

    // this works
    int[] test1DArray = returnArray();

    int[][] test2DArray = new int[][] {

        // this does not work
        new int[]= returnArray(),

        // yet this does
        new int[] {1, 2 ,3}
}

private static int[] returnArray() {

    int[] a = {1, 2, 3};
    return a;
}

我正在寻找一种创建二维数组的方法,并且第二个维度是从方法返回的数组。我不明白为什么它不起作用,因为我在Eclipse中得到的错误是

  

作业的左侧必须是变量

根据我的理解,我正在创建一个新的int数组并将返回的值赋给它。像这样

立即填充第二个维度数组
new int[] {1, 2 ,3}

就像一个魅力,我希望做一些类似于从returnArray()

返回给我的数组的东西

非常感谢任何帮助。

P /

2 个答案:

答案 0 :(得分:4)

只需使用:

int[][] test2DArray = new int[][] {
    returnArray(),
    new int[] {1,2 ,3}
};

答案 1 :(得分:2)

虽然@Eran解决了这个问题,但我觉得你应该明白为什么会出错。

初始化数组的内容时,基本上是返回值。

例如:new int[]{1, 2, 3}test2Darray内返回1,2和3,而int[] n = new int[]{1, 2, 3}正在test2Darray内初始化并声明一个数组。后者没有在数组中返回任何原始值,因此它给出了一个错误。

returnValue()是一个返回值(整数数组)的方法。因此控件认为它等同于键入new int[]{1, 2, 3}

因此new int[]{1, 2, 3}returnValue()有效。