2016-03-24 181 views
-2

我需要写一个使用for循环创建以下(一个人的腿)代码创建ASCII艺术:使用for循环

 /***/ \***\ 
    /****/  \****\ 
/*****/  \*****\ 

这应该是一个私有方法(即.createLegs),沿着腿左侧的空间需要减少到一定数量(即10),因此腿仍然离开(所以我可以稍后创建鞋子),并且每一排腿之间的空间需要增加。我可以打印将腿从左侧移开的空间,但无法弄清楚如何创建斜线,*中间,或另一条腿。任何帮助表示赞赏。 这是我到目前为止。

private void drawLegs() 
{ 
    final char SPACE=' '; 
    final int DISTANCE = 16; 
    final int HEIGHT = 7; 
    final char FWD='/'; 
    final char BWD='\\'; 

    for(int row=0; row<HEIGHT; row++) 
     { 
     int spaces = DISTANCE-row; 
     for(int count=0;count<spaces;count++) 
      { 
       System.out.print(SPACE); 
      } 
      System.out.println(); 
     } 
+2

欢迎来到SO。请阅读[问]。你的代码在哪里?你有什么尝试?如果您希望有人帮助您完成作业,请首先表明您的努力。 – OldProgrammer

+0

如果您可以打印空间,为什么不能打印斜线或明星? 'print('')','print('/')','print('*')'。你面临的问题的确切性质是什么?请记住,这不是一个代码写入服务,所以请告诉你迄今为止做了什么。 – Andreas

+0

更新到目前为止,我不确定如何去增加每行*的数量以及如何增加空间。 – James

回答

0

也许会有一个具体的回答你的问题,但我明白,你可以做如下。

private static void drawLegs() { 
     final char SPACE=' '; 
     int DISTANCE = 16; 
     final int HEIGHT = 7; 
     final char FWD='/'; 
     final char BWD='\\'; 
     int starCount = 1; 

     for (int row = 0; row < HEIGHT; row++) { 
      int spaces = DISTANCE - row; 
      for (int count = 0; count < spaces; count++) { 
       System.out.print(SPACE); 
      } 
      System.out.print(FWD); 
      for (int i = 0; i < starCount; i++) { 
       System.out.print("*"); 
      } 
      System.out.print(FWD); 
      for (int i = 0; i < starCount*2; i++) { 
       System.out.print(SPACE); 
      } 
      System.out.print(BWD); 
      for (int i = 0; i < starCount; i++) { 
       System.out.print("*"); 
      } 
      System.out.print(BWD); 
      DISTANCE--; 
      starCount++; 
      System.out.println(); 
     } 
    } 
0

如果你并不需要循环,最简单的方法将是

private void drawLegs() 
{ 
    System.out.println(" /***/ \\***\\"); 
    System.out.println(" /****/  \\****\\"); 
    System.out.println("/*****/  \\*****\\"); 
} 

所以进行的方式 - 你不需要做这在你的程序中,只有理解问题 - 写下一张具有以下数值的表格:(1)第一条腿之前的空格数,(2)第一条腿的星号数,(3)腿之间的空格数,以及(4)第二回合(从上面的代码算起)。

4 3 4 3 
2 4 6 4 
0 5 8 5 

对于每一列,你有一个初始值(第一行),你应该能够推测该递增/递减的循环的每次迭代。

您需要的最后一件事是如何连接多个字符。这可以通过for循环完成。一个例子,假设你想在一个字符串的结尾加上60倍的字母“A”:

String s = ""; 
for (int j=0; j<60; j++) s = s + "A"; 
+0

谢谢,这似乎是一个很好的起点 – James