仅使用while循环创建圣诞树

时间:2015-03-18 06:48:30

标签: java loops while-loop

我正在浏览在线Java课程,我的任务是创建一个圣诞树,该圣诞树可以根据确定树高的用户输入形成。我无法在打印圣诞树的方法中打印任何内容。我只能打电话给其他会为我打印的方法。输入只是树本身的高度,而不是基础。无论高度如何,底座都是相同的尺寸。

我尝试了很多不同的选项来获得所需的结果,但下面的代码是我最接近的代码。结果是树的弯曲版本,但它很接近......我只是无法弄清楚我做错了什么。

public static void printStars(int amount) {
    int i = 0;

    while (i < amount) {
        System.out.print("*");
        i++;
    }

    System.out.println("");
}

public static void printWhitespaces(int amount) {
    int i = 0;

    while (i < amount) {
        System.out.print(" ");
        i++;
    }
}

public static void xmasTree(int height) {
    int i = 1; // Stars incrementer

    while (i <= height) {
        int s = (height - i) / 2;
        printWhitespaces(s);
        printStars(i);

        i++;
    }
}

结果:

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

Desired result: 

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

3 个答案:

答案 0 :(得分:1)

我没有这样做,但希望它没问题;)

public static void printStars(int amount) {
    while (--amount >= 0)
        System.out.print("*");

    System.out.println("");
}

public static void printWhitespaces(int amount) {
    while (--amount >= 0)
        System.out.print(" ");
}

public static void xmasTree(int height) {
    int i = 1; // Stars incrementer

    // crown
    while (i <= height) {
        printWhitespaces(height - i);
        printStars(2*i-1);

        i++;
    }

    // trunk
    i = 2;
    while (--i>=0) {
        printWhitespaces(height - 2);
        printStars(3);
    }
}

答案 1 :(得分:1)

我写的一些动态,想与你分享:)

    int n=31;
    for (int i=1;i<=n;i++){
        if(i%2!=0){
            for (int j=i;j<=(n+i)/2;j++){
                System.out.print(" ");
            }
            for (int k=1;k<=i;k++){
                  System.out.print("*");
            }
            System.out.println();
        }
    }
    for(int i=1;i<=n/4;i++){
        for(int k=1;k<=(n/3);k++){
              System.out.print(" ");
        }
        for(int k=1;k<=n/3;k++){
              System.out.print("*");
        }
          System.out.println("");
    }

答案 2 :(得分:0)

空间和星星的数量取决于高度。

    public static void xmasTree(int height) {
       int spaces=height-1;
       int stars = 1;
       for(int i=0; i<height; i++){
          printWhitespaces(spaces);
          printStars(stars);
          stars += 2;
          spaces -= 1; 
       }
       spaces=height-2;
       printWhitespaces(spaces);
       printStars(3);
       printWhitespaces(spaces);
       printStars(3);
   }