打印金字塔

1.金字塔

    public static void main(String[] args) {
        /*
        思路分析
        化繁为简
        1. 先打印一个矩形
        *****
        *****
        *****
        *****
        *****
        2. 打印半个金字塔
        * //第 1 层 有 1 个*
        ** //第 2 层 有 2 个*
        *** //第 3 层 有 3 个*
        **** //第 4 层 有 4 个*
        ***** //第 5 层 有 5 个*
        3. 打印整个金字塔
            *   //第 1 层 有 1 个* 2 * 1 -1 有 4=(总层数-1)个空格
           ***  //第 2 层 有 3 个* 2 * 2 -1 有 3=(总层数-2)个空格
          *****  //第 3 层 有 5 个* 2 * 3 -1 有 2=(总层数-3)个空格
         *******  //第 4 层 有 7 个* 2 * 4 -1 有 1=(总层数-4)个空格
        ********* //第 5 层 有 9 个* 2 * 5 -1 有 0=(总层数-5)个空格*/
        
        for (int i = 1; i <= 5; i++) {
            for (int k = 1; k <= 5 - i; k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println("");
        }

    }

image

2.空心金字塔

public static void main(String[] args) {
	//第 1 层 有 1 个* 当前行的第一个位置是*,最后一个位置也是*
	//第 2 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
	//第 3 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
	//第 4 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
	//第 5 层 有 9 个* 全部输出*

        for (int i = 1; i <= 5; i++) {
            for (int k = 1; k <= 5 - i; k++) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                //当前行的第一个位置是*,最后一个位置也是*, 最后一层全部 *
                if(j == 1 || j == 2 * i - 1 || i == 5) {
                    System.out.print("*");
                } else {
                    //其他情况输出空格
                    System.out.print(" ");
                }
            }
            System.out.println("");
        }
    }

image

posted @ 2022-03-23 11:22  ___sunsets  阅读(59)  评论(0)    收藏  举报