多个2D阵列

时间:2015-11-14 08:27:25

标签: java arrays

假设我们有一个未指定维度的二维数组,我想创建一个生成多个数组的方法,这样就是这个方法:

  

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循环来解释每种可能性,并立即失控。谁能给我一个线索?

1 个答案:

答案 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.