使用for循环创建Ascii Art

时间:2016-03-24 22:47:42

标签: java loops for-loop ascii

我需要编写使用for循环的代码来创建以下内容(一个人的腿):

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

这应该是一个私人方法(即createLegs),腿左侧的空间需要减少到一个数字(即10),所以腿仍然远离(所以我以后可以创造鞋子)和腿之间的空间需要在每排增加。我可以打印将腿移离左侧的空间,但无法弄清楚如何创建斜线,* s介于中间,或者是另一条腿。任何帮助表示赞赏。 这是我到目前为止所做的。

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 个答案:

答案 0 :(得分: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倍的字母&#34; A&#34;在一个字符串的末尾:

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

答案 1 :(得分: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();
        }
    }