2017-09-05 77 views
1

我试图让计数金字塔:倒计时金字塔错误

 1 
    121 
    12321 
    1234321 
    123454321 

这是我的代码

for (int i=5; i>=1; i--){ 
     for (int j=5; j>= (i-1); j--){ 
      System.out.print(""); 
    } 
     for (int j=i; j<=5; j++){ 
      System.out.print(j); 
     } 
    System.out.println(); 

但是这一直给我的输出

 1 
    222 
    33333 
    4444444 
555555555 

如何我可以让我的金字塔的右侧倒计时

+0

我删除了JavaScript标记并添加了Java,因为语法显然是Java语法。 –

回答

3

这是一个工作实现。您对问题的处理方式对我来说似乎很好,但第三个内部回路有问题。它不是从1往上数,而是倒数。相反,只需使用单个外部循环的方法来覆盖金字塔的每一行以及三个内部循环。第一个循环可以打印空格,接下来的两个分别计数,然后分别计数。

int row = 1; 
for (int i=1; i<=5; i++) { 
    for (int o=1; o<=5-i; o++) { 
     System.out.print(" "); 
    } 
    for (int k=1; k<=i; k++) { 
     System.out.print(k); 
    } 
    for (int k = i-1; k >= 1; k--){      
     System.out.print(k); 
    } 
    System.out.println(); 
    row++; 
} 

输出:

1 
    121 
    12321 
1234321 
123454321 

演示在这里:

Rextester

+0

@GillesGouaillardet对我来说工作得很好 –

1

这是打印金字塔的方法:

public void print(int height) { 
    for (int i=0; i<height; i++) { 
     for (int j=height; j>=1; j--) { 
      if (j <= i+1) { 
       System.out.print(j); 
      } else { 
       System.out.print(" "); 
      } 
     } 

     for (int j=2; j<=height; j++) { 
      if (j <= i+1) { 
       System.out.print(j); 
      } else { 
       System.out.print(" "); 
      } 
     } 

     System.out.print("\n"); 
    } 
}