3

私はJavaでいくつかのオンライン演習を試みています。私は多くの演習を行いましたが、特定の n (n はユーザーからの入力) に対して、n = 4 の場合、次のようなクリスマス ツリーを描くというこの演習に行き詰まっています。

   X
   X
  XXX
   X
  XXX
 XXXXX
   X
  XXX
 XXXXX
XXXXXXX

ループについて頭が回らないようです。これは私がこれまで行ったことです:

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);
    }
}
4

1 に答える 1

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("");
     }
 }

考えなければならない唯一の違いは、使用されるスペースの数です。maxあるサイズの三角形を作成することによってのみ、他の三角形のスペースに収まらないため、これがそのパラメーターです。

したがって、作成する三角形がどれほど大きくても、最大の三角形 (最後の三角形) と必要なスペースの量について常に考える必要があります。

max-i-1純粋な三角形を作るだけの方法は次のようになります: ( に変更するだけの違いがありますn-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("");
     }
 }

サイズ 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
于 2013-10-23T20:45:08.390 に答える