2015-04-07 137 views
0

我剛剛開始使用Java,我的老師讓我使用嵌套for循環繪製以下兩個形狀。使用java繪製循環的形狀

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

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

但是,我能夠使用下面的代碼繪製第一個圖。

class TriangleDrawing{ 

    public static void main(String args[]){ 

     for(int x = 1; x <= 6; x++){ 

      for(int y = 1; y <= (6-x); y++){ 

       System.out.print(" "); 

      } 

      for(int z = 0; z < (x + (x-1)); z++){ 

       System.out.print("*"); 

      } 

      for(int p = 1; p <= (6-x); p++){ 

       System.out.print(" "); 

      } 

      System.out.println(); 

     } 

    } 

} 

我在繪製第二張圖時遇到了問題。
任何人都可以幫助我通過使用嵌套for循環繪製那一個?

+0

我投票關閉這一問題作爲由於諸如「僅使用for循環,無流量控制」這樣的任意限制而引發的主題不一致,這使得它更像是編程難題,可能適用於codegolf.stackexchange.com – weston

回答

0

在此塊中:

對(INT z = 0的; Z <(X +(X-1)); Z ++){

  System.out.print("*"); 

     } 

檢查是否是在第一個和/或最後一個元素。如果是這樣,打印'*'else,print「」

1

在我看來,第二個數字只是第一個數字,內部星號用空格替換。

這意味着你只需要改變z -loop,使得每行,但第一個和最後一個,它:

  • 打印一個星號;
  • 打印N空格,其中N從第二行開始,並且對於每行你增加2;和
  • 打印最後一個星號。

對於第一行和最後一行,代碼將需要保持不變。對於前者,你只需要一個星號,對於後者,你需要所有的星號。另外,第三個循環是完全不必要的。因爲沒有人能夠看到它們,所以在行末(在這種情況下)放置空格是沒有意義的。


因爲它是課堂作業,所以我強烈建議您自己嘗試並實施。爲了完整起見,我包括下面的解決方案:

public class Test { 
    public static void main(String args[]){ 
     int sz = 6; 

     // First line "*" 

     for (int y = 1; y < sz; y++) 
      System.out.print(" "); 
     System.out.println("*"); 

     // Middle lines "* *" 

     for (int x = 2; x < sz; x++) { 
      for (int y = 1; y <= sz - x; y++) 
       System.out.print(" "); 
      System.out.print("*"); 
      for (int y = 1; y < x * 2 - 2; y++) 
       System.out.print(" "); 
      System.out.println("*"); 
     } 

     // Final line "*****" 

     System.out.print("*"); 
     for (int y = 1; y < sz * 2 - 2; y++) 
      System.out.print("*"); 
     System.out.println("*"); 
    } 
} 
0

改變你的循環正在打印*爲:

for(int z = 0; z < (x + (x-1)); z++){ 
     if(z==0 || z ==(x + (x-1))-1 || x==6) 
       System.out.print("*"); 
     else 
       System.out.print(" "); 

    } 

,而不是

for(int z = 0; z < (x + (x-1)); z++){ 

      System.out.print("*"); 

     } 
+0

我不是允許使用流量控制;僅允許循環使用。 –