2013-08-25 126 views
-3

我有一个关于创建三角形或金字塔的外部循环的问题,通常我们用3“for”来编码它,第一个是行,第二个是空格,第三个是“*”然而,有时我感到困惑第一对于其为外环,例如:Java循环混淆

  * 
     * * * 
     * * * * * 

用于上述棱锥,所述第一回路应for(int i=0;i<=3;i++)for(int i=0;i<=5;i++)

+0

发表您的代码.. –

+3

我们不写代码给你。真的,如果你无法弄清楚,就试试看看外循环需要多少迭代。您不需要第一次就能正确使用代码,只需编写程序即可学习更多知识,并在出现问题时进行调试。 –

回答

1

你可以用这个提示尝试: -

for (int i = rows; i > x; i--) { ... } 

对于每一行,你必须先打印一些空间,然后打印星星。空格的数量应该由每行一个下降,恒星的数量应该增加与全码已更新

: -

class Pyramid 
{ 
    public static void main(String[] args) 
    { 
     int x=11; 
     int y=x/2; // spaces 
     int z=1; // *`s 

     for(int i=0;i<3;i++) 
     { 
      for(int j=0;j<y;j++) 
      { 
       System.out.print(" "); 
      } 
      for(int k=0;k<z;k++) 
      { 
       System.out.print("*"); 
      } 

      y=y-1; 
      z=z+2; 
      System.out.println(); //new line 
     } 

    } 
} 
+0

我在想这会让OP更加混乱。迭代方向对于这个问题并不重要。另外,看起来OP已经有用于生成三角形的代码,但是它们在修改它时很麻烦。 (当然,OP应该首先发布他们的代码。) –

+0

@MattiasBuelens: - 我完全同意你的看法,但我刚才解释了OP如何解决这个问题。 **对于每一行,您必须首先打印一些空格然后打印星星。空间的数量应该减少每行一个,并且星星的数量应该增加** –

+0

不够公平。我猜他们的代码已经可以像这样工作了,但我们需要查看它来验证。 –

0
class Pyramid 
{ 
    public static void main(String[] args) 
    { 
     for(int j=1;j<=5;j+=2) //for lines 
     { 
       for(int i=1;i<=j;i++) //for stars and spaces 
       { 
        System.out.print("* "); 
       } 
       System.out.println(); //newline 
     } 
    } 
} 
+0

谢谢你的帖子,你表示第一个循环是行,但通过使用你的代码,它打印了3行,那么为什么你使用j <= 5但不是j <= 3?我认为5实际上是明星的数目,对吧?但是你的第一个循环是关于线条的 – user2711992