我遇到以下示例的问题:
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 /
答案 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()
有效。