2017-02-27 3 views
2

Ich habe bereits mit normalen gezackten Array gemacht, aber ich verstehe nicht, wie man es umgekehrt umkehrt. Auch ich habe eine Frage, wie man die Seite des Dreiecks von links nach rechts verschiebt? Kann ich das mit Schleifen machen oder muss ich für jede Zeile meines Arrays eine andere Anzahl von Leerzeichen schreiben?Wie man ein gezacktes Dreieck-Array umkehrt?

static int[][] triangle(int lines){ 
    int[][] arr = new int[lines][]; 
    for(int i = 0; i < arr.length; i++){ 
     arr[i] = new int[i + 1]; 
    } 
    int count = 0; 
    for(int i = 0; i < arr.length; i++){ 
     for(int j = 0; j < arr[i].length; j++){ 
      arr[i][j] = count++; 
     } 
    } 

    for(int i = 0; i < arr.length; i++){ 
     for(int j = 0; j < arr[i].length; j++){ 
      System.out.print(arr[i][j] + " "); 
     } 
     System.out.println(); 
    } 
return arr; 
} 

Irgendeine Art von Ergebnis:

0 
1 2 
3 4 5 
6 7 8 9 
10 11 12 13 14 

Antwort

2

Sie können durch Änderung der Art und Weise Sie initialisieren Ihre arr Array ein umgekehrtes Dreieck schnell erstellen.

static int[][] revTriangle(int lines) { 
    int[][] arr = new int[lines][]; 
    for (int i = 0; i < arr.length; i++) { 
     arr[i] = new int[lines - i]; // this line 
    } 
    int count = 0; 
    for (int i = 0; i < arr.length; i++) { 
     for (int j = 0; j < arr[i].length; j++) { 
      arr[i][j] = count++; 
     } 
    } 

    for (int i = 0; i < arr.length; i++) { 
     for (int j = 0; j < arr[i].length; j++) { 
      System.out.print(arr[i][j] + " "); 
     } 
     System.out.println(); 
    } 
    return arr; 
} 

bekomme ich folgende Ausgabe:

0 1 2 3 4 
5 6 7 8 
9 10 11 
12 13 
14 

hoffe, das hilft!

0

Wenn Sie eine kompaktere Lösung Sie können einige Schleifen Gruppe (auf Anacron Antwort stützt):

static int[][] triangle(int lines, boolean straight) 
    { 
    int[][] arr = new int[lines][]; 
    int count = 0;  
    for (int i = 0; i < arr.length; i++) 
    { 
     int start = (straight? i : lines); 
     int step = (straight? 1 : -i); 
     arr[i] = new int[start + step ]; 
     for (int j = 0; j < arr[i].length; j++) 
     { 
     arr[i][j] = count++; 
     System.out.print(arr[i][j] + " ");   
     } 
     System.out.println(); 
    }  
return arr; 

}