2013-10-19 47 views
0

我應該根據用戶輸入的數字創建此模式。用戶輸入的數字對應於每行中的行數和星號。使用for循環的模式

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

我被告知只能使用嵌套for循環,並且不能使用printf()。這只是我正在處理的代碼的一部分。

for (int row = 1; row <= size; row++) { 
      for (int column = 1; column <row; column++) { 
       System.out.print(" "); 
      } 
      for (int column = 1; column <= row; column++) { 
      System.out.print("*"); 
     } 
     System.out.println(); 

    } 

我似乎無法使我的輸出如上所示。相反,我得到這個:

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

有人可以給我一個暗示,我應該做什麼?我花了2個小時,但仍然無法弄清楚。

回答

1

對於每一行,您應該輸出最大size字符;因此,如果大小= 5,在第三行,如果輸出三顆星,那麼你需要size-row空格=> 5 - 3 = 2

在代碼:

for (int row = 1; row <= size; row++) { 
    for (int column = 1; column <= size-row; column++) { 
     System.out.print(" "); 
    } 
    for (int column = 1; column <= row; column++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 

樣品:http://ideone.com/hC5HDQ

+0

感謝您的幫助:)。 – AvP

0

你想從更多的空間開始,然後刪除它們,直到沒有更多的空間。但在刪除空格時,您還需要添加和附加的「*」。因此,對於每個空間刪除您將添加一個「*」

0

嘗試這

int i=5; 

do{ 
    int j=5; 

    while(j>i){ 
     System.out.print("*"); 
     j--; 
    } 
    System.out.println(); 
    i--; 

}while(i>0);