2017-07-24 2 views
-2

Ich versuche, ein Sub-Grid (2D-Array) aus einem größeren 2D-Array mit einer bestimmten Länge zu drucken, während an einem bestimmten Punkt im Raster zu starten.Java-Array - Drucken von Sub-Array-Gitter

Zum Beispiel, hier ist mein 2d Array:

int[][] block = {{2, 4, 5, 6, 5}, {1, 3, 5, 7, 8}, {8, 6, 4, 2, 9}}; 

Sagen wir, ich am Punkt 1,1 oder Block beginnen soll [1] [1]. Dann möchte ich ein 2x2 Gitter/Box aus diesem größeren 2d Array ausdrucken. Zum Beispiel möchte ich dann die Platine {3, 5} & {6, 4} ausdrucken.

Ich möchte dies tun, ohne auf andere Klassen wie java.util.Arrays zu importieren.

+2

ja es einen Weg gibt, aber wir sind kein Schreiben von Code-Community. Beginnen Sie mit dem Code selbst und kommen Sie zurück, wenn Sie in ein Problem geraten. Auch Ihre Frage gibt nicht an, wie genau die Aufgabe ausgeführt werden soll. – XtremeBaumer

+0

Willkommen bei Stack Overflow! Ihre Frage enthält nur Anforderungen - es zeigt keinerlei Bemühungen von Ihnen, dieses Problem selbst zu lösen. Bitte fügen Sie Ihre Versuche zu diesen Fragen hinzu - da diese Site nicht kostenlos ist, machen wir Ihre (Heim-) Arbeit. Darüber hinaus wenden Sie sich bitte an die [Hilfe], um zu erfahren, wie/was Sie hier fragen können. Vielen Dank! – GhostCat

+0

Iteration von einem bestimmten Index ist eine kleine einfache Schleife. Was genau ist deine Frage? Mit welchem ​​Teil davon stecken Sie fest? – GhostCat

Antwort

0
public static void main(String[] args) { 
     int[][] block = { 
       {2, 4, 5, 6, 5}, 
       {1, 3, 5, 7, 8}, 
       {8, 6, 4, 2, 9}}; 

     printBlock(getGrid(block, 1, 1, 2, 3)); 
    } 

    public static int[][] getGrid(int[][] block, int x, int y, int w, int h) { 
     int[][] result = new int[w][h]; 
     int lastX = x + w, lasty = y + h; 
     for (int i = x; i < lastX; i++) { 
      for (int j = y; j < lasty; j++) { 
       result[i - x][j - y] = block[i][j]; 
      } 
     } 
     return result; 
    } 

    public static void printBlock(int[][] block) { 
     for (int i = 0; i < block.length; i++) { 
      for (int b = 0; b < block[i].length; b++) { 
       System.out.print(block[i][b] + "\t"); 
      } 
      System.out.println(); 
     } 
    } 

output:

0

Sie müssen nur die Indizes der Schleifen von der ursprünglichen Art und Weise zu ändern, um ein 2D-Array zu drucken:

Original:

public static void printSubGrid(int[][] array) { 
    for (int i = 0; i < array.length; i++) { 
     for (int j = 0; j < array[i].length; j++) 
      System.out.print(array[i][j] + " "); 
     System.out.println(); 
    } 
} 

Also mit subgrid (Attribute sind xFrom, yFrom, xTo, yTo)

public static void printSubGrid(int[][] array, int xF, int yF, int xT, int yT) { 
    for (int i = xF; i < (xF + xT); i++) { 
     for (int j = yF; j < (yF + yT); j++) 
      System.out.print(array[i][j] + " "); 
     System.out.println(); 
    } 
}