Java中的初学者 - 控制输出 - 生成Asterix

时间:2012-02-08 06:52:33

标签: java whitespace drjava

我在完成此计划时遇到困难。我正在尝试创建一个创建asteriks的程序,但然后将其变成一个三角形。

这就是我已经拥有的。

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

它创造了星号,但我怎么能够在它们形成三角形的地方继续它们......所以它们随着它们变大,然后变小......

提前谢谢!

2 个答案:

答案 0 :(得分:1)

尝试移动

int spaces = n;

到从标准输入读取n的值后

这解决了你问题的一半,希望能让你走上正轨。

答案 1 :(得分:0)

我在您的代码中添加了一些内容并让它打印完整的三角形,其中扫描仪中输入的数字将是底行中打印的星号数。即如果输入是3,则三角形将是两行1-> 3;如果输入为5,那么三角形将是3行1-> 3-> 5,依此类推。

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

我在if-else之后添加了另一个if语句,当变量j超过第一个循环条件时触发。这会触发另一个循环,通过基本上重复你的第一个if语句使输出行对称。

我希望这有助于=)