2015-04-07 102 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

我不是允许使用流量控制;仅允许循环使用。 –