用"X"画一棵圣诞树

Emm*_*uel 3 java loops for-loop

我正在尝试Java中的一些在线练习.我做了很多练习,但是如果n = 4的话,我会坚持使用一个给出给定n(其中n是来自用户输入)的练习,绘制一个如下所示的圣诞树:

   X
   X
  XXX
   X
  XXX
 XXXXX
   X
  XXX
 XXXXX
XXXXXXX
Run Code Online (Sandbox Code Playgroud)

我似乎无法绕过循环.这是我到目前为止所做的:

public class Test {

    public double org, mes;

    public Test() {
    }

    private static void drawChristmasTree(int n) {
        if (n == 1) {
            System.out.println("X");
        } else {
            for (int p = 1; p <= n; p++) {
                for (int i = 1; i <= n; i++) {

                    for (int j = 0; j < n - i; j++) {
                        System.out.print(" ");
                    }
                    for (int j = 0; j < (2 * i - 1); j++) {
                        //System.out.println("X");
                        System.out.print("X");
                    }
                    System.out.println();
                }
            }
        }
    }

    public static void main(String[] args) {
        drawChristmasTree(4);
    }
}
Run Code Online (Sandbox Code Playgroud)

lib*_*bik 7

编写制作三角形的方法然后在创建圣诞树时在方法中调用它是很好的:

public static void main(String[] args) {
    drawChristmasTree(4);
}

 private static void drawChristmasTree(int n) {
     for (int i = 0; i < n; i++) {
         triangle(i+1,n);
     }
}

 private static void triangle(int n, int max){
     for (int i = 0; i < n; i++) {
         for (int j = 0; j < max-i-1; j++) {
             System.out.print(" ");
         }
         for (int j = 0; j < i*2+1; j++) {
             System.out.print("X");
         }
         System.out.println("");
     }
 }
Run Code Online (Sandbox Code Playgroud)

您必须考虑的唯一区别是,不寻常的是使用的空格数量.这是那个max参数,因为只有通过制作某种尺寸的三角形才能与其他三角形的空间相匹配.

因此,无论您构建多大的三角形,您都必须始终考虑最大三角形(最后一个)以及您需要多少空间.

只用于制备纯的三角形的方法如下所示:(仅存在改变的差max-i-1n-i-1)

 private static void triangle(int n){
     for (int i = 0; i < n; i++) {
         for (int j = 0; j < n-i-1; j++) {
             System.out.print(" ");
         }
         for (int j = 0; j < i*2+1; j++) {
             System.out.print("X");
         }
         System.out.println("");
     }
 }
Run Code Online (Sandbox Code Playgroud)

树大小为10的输出:

         X
         X
        XXX
         X
        XXX
       XXXXX
         X
        XXX
       XXXXX
      XXXXXXX
         X
        XXX
       XXXXX
      XXXXXXX
     XXXXXXXXX
         X
        XXX
       XXXXX
      XXXXXXX
     XXXXXXXXX
    XXXXXXXXXXX
         X
        XXX
       XXXXX
      XXXXXXX
     XXXXXXXXX
    XXXXXXXXXXX
   XXXXXXXXXXXXX
         X
        XXX
       XXXXX
      XXXXXXX
     XXXXXXXXX
    XXXXXXXXXXX
   XXXXXXXXXXXXX
  XXXXXXXXXXXXXXX
         X
        XXX
       XXXXX
      XXXXXXX
     XXXXXXXXX
    XXXXXXXXXXX
   XXXXXXXXXXXXX
  XXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXX
         X
        XXX
       XXXXX
      XXXXXXX
     XXXXXXXXX
    XXXXXXXXXXX
   XXXXXXXXXXXXX
  XXXXXXXXXXXXXXX
 XXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)