尝试做一个ascii艺术圣诞树

时间:2016-10-22 01:20:52

标签: java

我们对AP计算机科学的任务之一是打印ascii艺术圣诞树。我无法将不同的部分集中在彼此之上。 以下是图片应该是什么样子的一般概念: enter image description here

 /* Matthew Johnson
 * AP Computer Science
 * Programming project 1
 */
 public class ChristmasTrees
{
    public static void main(String[] args)
    {
        printTrees(4,5);
    }
    // printTrees accepts parameters for number of segments (seg) and height         (ht) for the tree
    // the method then prints each tree according to the parameters given
    public static void printTrees(int seg, int ht)
    {
        for(int i = 1; i <= seg; i++)
        {   
            int topStar;
            int firstStar = (i * 2 - 1);
            for(int j = 1; j <= ht; j++)
            {               
               for(int spaces = 1; spaces <= (ht - j); spaces++)
               {
               System.out.print(" ");
               }

               for(topStar = 1; topStar <= firstStar; topStar++)
               {
                   System.out.print("*");
               }             
               firstStar += 2;               
               System.out.println();
            }                      
        }
    }  
}

2 个答案:

答案 0 :(得分:0)

对于每个细分,您可以根据当前使用的树的哪个部分+ (seg - i)添加空格:

更改此行:

for(int spaces = 1; spaces <= (ht - j); spaces++)

到此:

for(int spaces = 1; spaces <= (ht - j) + (seg - i); spaces++)   

这至少会沿着中心排列每个部分。

答案 1 :(得分:0)

对于空格数量,您可能需要考虑段数。

for(int spaces = 1; spaces <= (ht-j +seg - i); spaces++)