2013-05-03 58 views
0

好吧,我很尴尬我不得不问这个问题,但我被困住了,所以我们走了,请推动我朝着正确的方向前进。 我们需要创建这个使用嵌套循环:明星楼梯混乱

* 
** 
*** 
**** 
***** 

这是我想出了。

int row,col; 
for(row = 5; row >= 1; row--) 
{ 
    for (col = 0; col < 5 - row; col++) 
     println(""); 

    for(col = 5; col >= row; col--) 
     print("*"); 
} 

它几乎可以工作,但它打印每行之间的空间,我不能为我的生活弄清楚为什么。

+2

你为什么这样做首席循环中的tln(“”)? – mbeckish 2013-05-03 18:43:19

+0

我的逻辑是这样,它进入下一行并在那里打印下一行星星。 – James 2013-05-03 18:44:46

+0

是的,你希望它下行一行,以便它在下一行下面一行。你不想要一个循环。 – mbeckish 2013-05-03 18:45:35

回答

1

我想你只想用一个内循环来打印每一行星星。

int row, col; 
for(row = 1; row <= 5; row++) { 
    for(col = 0; col < row; col++) { 
     print("*"); 
    } 
    println(""); 
} 
+0

成功!谢谢!我一定在想着这件事情,自己燃烧起来! – James 2013-05-03 18:52:56

2

为什么不只是一个println("");在循环的结尾,而不是循环该语句?你只需要每排星星的一条新线。

0

你为什么不这样做:

for (int row = 0; row < 5; row++) { 
     for (int col = 0; col <= row; col++) { 
      System.out.print("*"); 
     } 
     System.out.print("\n"); 
} 
+0

你为什么要重写代码?他的变量名称稍微有意义。 – Dolphiniac 2013-05-03 18:49:44

0

你为什么不把它简化,然后在每一行的末尾打印一个换行符?

int row, col; 
for(row=0; row<5; row++) { 
    for(col=0;col<=row;col++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 

打印在一次一行,然后打印行端


对于只有一个I/O操作的缘故,一个功能可以是一个合适的方法中:

public String starStarcase(int rows) { 
    int row, col; 
    String str=""; 
    for(row = 0; row < rows; row++) { 
     for(col = 0; col <= row; col++) { 
      str += "*"; 
     } 
     str += "\n"; 
    } 
    return str; 
} 

要打印结果:

System.out.println(starsStaircase(5));