2016-05-16 150 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; 
 
    }

相關問題