假设我们有一个未指定维度的二维数组,我想创建一个生成多个数组的方法,这样就是这个方法:
tile(int [] [] list,int row,int column){ ... }
将为我提供由int列水平扩展的数组,并由int行垂直扩展。
你怎么能这样做?我的尝试是:
public static int[][] tile(int[][] list, int row, int column) {
int [][] renewed = new int[row*(list.length)][column*(list[0].length)];
for (int i = 0; i<list.length; i++) {
for (int j = 0; j<renewed.length; j+=row) {
renewed[j] =list[i];
}
}
但是我没有得到任何我想要的结果。似乎这样做需要3~4个嵌套for循环来解释每种可能性,并立即失控。谁能给我一个线索?
答案 0 :(得分:0)
试试这个:
int [][] list={{12,3},{4,6}};
//loop through each array in the 2d array
for(int x=0;x<list.length;x++){
//make copy of array
int[] listcopy=list[x].clone();
//expand length of array by one
list[x]=new int [listcopy.length+1];
list[x][list.length-1]=0;
for(int p=0;p<listcopy.length;p++){
//copy each index to new array
list[x][p]=listcopy[p];
}
}
//make copy of 2d array
int[][] listcopy=list.clone();
//expand length of 2d array by 1
list=new int[listcopy.length+1][];
list[list.length-1]=new int[1];
//assign values to the 2d array
for(int x=0;x<listcopy.length;x++){
list[x]=listcopy[x];
}
它将新数组索引的值设置为0.