我已经完成了正常的锯齿状阵列,但我不明白如何颠倒它。我还有一个问题,如何将三角形的一侧从左侧移到右侧?我可以用循环执行此操作,还是需要为数组的每一行写入不同数量的空格?
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
答案 0 :(得分: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
希望这有帮助!
答案 1 :(得分: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;
}