2017-02-27 39 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; 

}