在没有system.arraycopy的情况下将特定行从一个2D数组复制到另一个2D数组

时间:2016-05-16 21:46:00

标签: java arrays multidimensional-array

所以我必须编写一个数组的方法,从i到j行,并将这些行复制到一个新数组。这就是我到目前为止所得到的

 public static void getRows(int i, int j, int[][] array){
        int another[] = new int[j-i];
        int n = 0;
       for (int k = 0; k < array.length; k++){
           while (i <= j){
               if (k == i){
                   another[n] = array[k][0];
               }
               i++;
           }
       }
    }

2 个答案:

答案 0 :(得分:1)

首先,您不会返回或打印任何内容。其次,要从输入中复制多行,返回的数组应该是2d(而不是1d)。创建new int[][]j - i。然后从array复制到新阵列。像,

public static int[][] getRows(int i, int j, int[][] array) {
    int[][] ret = new int[j - i][];
    for (int k = i; k < j; k++) {
        ret[k - i] = new int[array[k].length];
        for (int m = 0; m < ret[k - i].length; m++) {
            ret[k - i][m] = array[k][m];
        }
    }
    return ret;
}

然后你可以用

之类的东西来调用它(并打印结果)
public static void main(String[] args) {
    int[][] t = { { 0, 1 }, { 2, 3 }, { 4, 5 } };
    System.out.println(Arrays.deepToString(getRows(1, 3, t)));
}

哪个输出

[[2, 3], [4, 5]]

答案 1 :(得分:1)

@Elliot我是这样做的:)

 public static int[][] getRows(int i, int j, int[][] array){
        int[][] another = new int[j-i+1][];
        while (i <=j){
            for (int k = 0; k < another.length; k++){
                another[k]=array[i];
                i++;
            }
        }
        return another;
    }