2013-05-03 90 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));