2016-05-16 152 views
0

因此我必须编写一个方法进入数组,并从i行到j行,并将这些行复制到一个新数组。这是我到目前为止所提供的从一个二维数组拷贝特定的行到另一个没有system.arraycopy

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++; 
      } 
     } 
    } 
+0

问题是? – shmosel

+1

['Arrays.copyOf'](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOf(boolean [],%20int))? –

+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]] 
+0

谢谢@Elliott :) ....在我发布后,我发现我没有返回任何东西,已经做了一点点不同,而不是吉我加1,这样我也会包括第一行 –

0

@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; 
 
    }

相关问题