2016-05-16 12 views
0

Also muss ich eine Methode schreiben, die in Array geht und von i bis j Zeilen und kopiert diese Zeilen in ein neues Array. Das ist, was ich bis jetzt heraufkopieren Sie bestimmte Zeile von einem 2D-Array zu einem anderen ohne 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

Und die Frage ist? – shmosel

+1

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

+0

wie es geht.dieser Code funktioniert nicht –

Antwort

1

Zuerst werden Sie nichts zurückgeben oder drucken. Zweitens, um mehrere Zeilen von Ihrer Eingabe zu kopieren, sollte das zurückgegebene Array 2d (nicht 1d) sein. Erstellen Sie eine new int[][] von j - i Zeilen. Kopieren Sie dann von array in das neue Array. So etwas wie,

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

Dann können Sie es aufrufen (und die Ergebnisse ausdrucken) mit so etwas wie

public static void main(String[] args) { 
    int[][] t = { { 0, 1 }, { 2, 3 }, { 4, 5 } }; 
    System.out.println(Arrays.deepToString(getRows(1, 3, t))); 
} 

Welche

[[2, 3], [4, 5]] 
+0

dank @Elliott :) .... nachdem ich es schreibe ich herausgefunden, dass ich nichts zurück zurückgekehrt war, habe es ein bisschen anders gemacht und anstelle von ji habe ich plus 1 hinzugefügt, so dass ich auch die erste Zeile einfügen werde –

0

gibt @Elliot Ich habe es so :)

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

Verwandte Themen