Java语言实现用星号在屏幕上打印菱形

1.分析

     * 可以将菱形分为上下两部分和左右两部分思考
     * 假设打印如图高度为9的菱形
     * 先考虑前5行
     * 第一行,打印空格数为:4,打印'*'数为1
     * 第二行,打印空格数为:3,打印'*'数为3
     * 第二行,打印空格数为:2,打印'*'数为5
     * ...
     * 可以发现空格数是在递减,规律是:[高度/2-i](这里的i是行序号,从0开始)
     * '*'的规律是:[2*i+1]
     * 再考虑后4行
     * 第一行,打印空格数为1,打印'*'数为7
     * 第二行,打印空格数为2,打印'*'数为5
     * ...
     * 空格的规律是:[i+1](i由0开始)
     * '*'的规律是:[高度-2*(i+1)]

2.代码

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入菱形的高度(高度为奇数):");
        int high;
        while (true) {
            high = scanner.nextInt();
            if (high % 2 != 0) {
                break;
            } else {
                System.out.println("输入有误,请重新输入:");
            }
        }
        int x1 = high / 2 + 1;
        int x2 = high / 2;
        //上半部
        for (int i = 0; i < x1; i++) {
            for (int j = 0; j < x2 - i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        //下半部
        for (int i = 0; i < x2; i++) {
            for (int j = 0; j < (i + 1); j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < high - 2 * (i + 1); j++) {
                System.out.print('*');
            }
            System.out.println();
        }

    }

猜你喜欢

转载自blog.csdn.net/Cyy19970527/article/details/81632895