2014-03-27 31 views
-3

我想下面的星星圖案打印關於星星的圖案

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

我使用下面的邏輯來打印:

* 
*** 
***** 

代碼上半年:

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

但我仍然不確定如何打印整個結構。

+2

有哪些具體要求?你必須使用'for'循環嗎?行數是否必須靈活?另外,你可以使用* \ n *** \ n等。 – Bathsheba

+0

順便說一句,這樣做的聰明方法是使用'for(i = -a; i <= + a; ++ i) '。然後,在該行上打印的星號的形式爲'n - | i |',其中'| i |'表示'i'的絕對值。 'n'可能是'a + 1'。 – Bathsheba

+0

這是一個家庭作業問題,是嗎? – 2014-03-27 08:28:43

回答

1

你只需要編寫反向循環,從UPPERBOUND開始 - 1.見波紋管代碼:

int numberOfLines = 3; 
for (int i = 1; i <= numberOfLines; i++) { 
    for (int j = 1; j < 2*i; j++){ 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 
for (int i = numberOfLines - 1; i > 0; i--) { 
    for (int j = 1; j < 2*i; j++){ 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 
+1

你可以做一個遞歸函數,或者你可以使用一個StringBuilder來避免所有的打印和打印。取決於用戶想要做什麼。有很多方法可以解決這個問題。 – Slimu

1

這也許會是有意義作爲簡單的步驟儘可能去。

首先,你需要五線,所以

for (i = 1; i <= 5; i++) { 

接下來,在線i,決定你要去的地方星號的數量。在第3行有5個星號,每個步驟在該行以上或以下有兩個。

int len = 5 - Math.abs (i - 3) * 2; 

然後,只需將它們放在一個循環:

for (j = 1; j <= len; j++) 
     System.out.print("*"); 

,其中包括一個新行:

System.out.println(); 
}