2017-02-27 89 views
2

我已經做了正常的參差不齊的陣列,但我不明白如何顛倒它。另外我有一個問題,如何將三角形的邊從左側移到右側?我可以用循環做到這一點,或者我需要爲我的數組的每一行寫入不同數量的空格?如何扭轉三角形鋸齒狀陣列?

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

一些樣的結果:

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

回答

2

你可以通過改變你初始化數組arr的方式快速創建一個顛倒的三角形。

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

我得到以下輸出:

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

希望這有助於!

0

如果你需要一個更緊湊的解決方案,你可以組一些環路(在anacron的答案基礎):

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; 

}