1

このプログラムを完了するのに苦労しています。アスタリスクを作成するプログラムを作成しようとしていますが、それを三角形にします。

これは私がすでに持っているものです。

public class 12345 {
    public static void main(String[] args) {
        int n = 0;
        int spaces = n;
        int ast;

        System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *");

        Scanner keyboard = new Scanner(System.in);
        n = keyboard.nextInt();

        for (int i = 0; i < n; i++) {
            ast = 2 * i + 1;

            for (int j = 1; j <= spaces + ast; j++) {
                if (j <= spaces)
                    System.out.print(' ');
                else
                    System.out.print('*');
            }

            System.out.println();
            spaces--;
        }
    }
}

アスタリスクを作成していますが、三角形を作る場所でそれらを続けるにはどうすればよいでしょうか...それらは進むにつれて大きくなり、次に小さくなります...

前もって感謝します!

4

2 に答える 2

1

移動してみてください

int spaces = n;

の値がnstdinから読み取られた後。

これはあなたの問題の半分を解決し、うまくいけばあなたを正しい軌道に乗せることができます。

于 2012-02-08T07:07:02.247 に答える
0

コードにいくつか追加して、完全な三角形を印刷するようにしました。スキャナーに入力された数値は、一番下の行に印刷されたアスタリスクの数になります。つまり、入力が 3 の場合、三角形は 1->3 の 2 つの行になります。入力が 5 の場合、三角形は 1->3->5 の 3 行になります。

    public static void main(String[] args) {
        int ast;
        int reverse = 1;

        System.out.println("Please enter a number from 1 - 50 and I will draw a triangle with these *");

        Scanner keyboard = new Scanner(System.in);
        int spaces = keyboard.nextInt();


        for (int i = 0; i < spaces; i++) {
            ast = 2 * i + 1;

            for (int j = 1; j <= spaces + ast; j++) {
                if (j <= spaces) {
                    System.out.print(' ');
                } else {
                    System.out.print('*');}
                if (j > spaces + ast) {
                    for (int k = 0; k < spaces-(reverse-1); k++) {
                        System.out.print(' ');
                    }
                }
                int k = 0;
                reverse++;

            }

            System.out.println();
            spaces--;
        }
    }
}

変数 j が最初のループ条件を超えたときにトリガーされる if-else の後に別の if ステートメントを追加しました。これにより、基本的に最初の if ステートメントを繰り返すことによって出力行を対称にする別のループがトリガーされます。

これが役立つことを願っています=)

于 2012-10-04T20:38:36.343 に答える