全面披露;我需要知道这一点。我想从方法将单个数组返回到多维数组。通过将以下代码返回到另一个一维数组,然后使用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();
答案 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]);
}
}