打印数字金字塔

时间:2013-10-20 14:11:34

标签: java

我有功课要做一个看起来像这样的三角形:

    1
   1 2
  1 2 3
 1 2 3 4
1 2 3 4 5

我已经能够使用以下代码创建几乎一半的三角形:

public static void main(String[] args) {
    for (int i = 1; i <= 6; i++) {
        for (int j = 1; j <= i; j++)
            System.out.print(j + " ");
        System.out.println();
    }
}

我一直无法弄清楚如何用我的代码镜像三角形的另一半看起来像上面的三角形。教师暗示使用带有tab返回的for循环是实现此目的的方法。

2 个答案:

答案 0 :(得分:1)

喜欢@ Maroun的答案,但更简单

int size = 6;
for (int i = 1; i <= size; i++) {
    for (int j = i; j < size; j++)
        System.out.print(" ");
    for (int j = 1; j <= i; j++)
        System.out.print(j + " ");
    System.out.println();
}

int size = 6;
for (int i = 1; i <= size; i++) {
    for (int j = i - size + 1; j <= i; j++)
        System.out.print((j > 0 ? j : "") + " ");
    System.out.println();
}

打印

     1 
    1 2 
   1 2 3 
  1 2 3 4 
 1 2 3 4 5 
1 2 3 4 5 6 

答案 1 :(得分:0)

你可以尝试这个:

int x = 0;
for(int i = 1; i <= 5; i++) {
   for(int k = x; k < 4; k++) {
      System.out.print(" ");  
   }
   x++; //less spaces will be printed in the next iteration
   for(int j = 1; j <= i; j++) {
      System.out.print(j + " ");
   }
   System.out.println();
}

我写了另一个以4个空格开头的循环,然后减少了空格量。


输出:

    1
   1 2
  1 2 3
 1 2 3 4
1 2 3 4 5

提示:始终为您的循环和条件打开{,即使是一次操作,也可以防止错误。