java中关于for循环各种金字塔的逻辑及代码(包括经典*)

该文章已生成可运行项目,

我将通过7种典型金字塔案例为您解析for循环的图形绘制技巧,并提供完整的代码实现和输出示例。本文代码支持动态层数配置,所有示例以5层金字塔为基准。

一、基础实心金字塔(经典星号结构)

实现逻辑:通过双重循环控制行、空格与星号的递进关系

public static void solidPyramid(int layers) {
    for (int i = 1; i <= layers; i++) {
        // 空格递减逻辑 
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        // 星号奇数列递增 
        for (int k = 1; k <= 2*i-1; k++) {
            System.out.print("*"); 
        }
        System.out.println(); 
    }
}

输出示例(layers=5)

    *
   *** 
  *****
 *******
*********

二、空心金字塔(边框模式)

特殊处理:仅首尾行和每行的首尾位置输出星号

public static void hollowPyramid(int layers) {
    for (int i = 1; i <= layers; i++) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        for (int k = 1; k <= 2*i-1; k++) {
            // 边界条件判断 
            boolean isEdge = (k == 1 || k == 2*i-1 || i == layers);
            System.out.print(isEdge  ? "*" : " ");
        }
        System.out.println(); 
    }
}

输出示例

    *
   * *
  *   *
 *     *
*********

三、数字金字塔(对称数列)

创新点:数字对称分布+双向递增逻辑

public static void numericPyramid(int layers) {
    for (int i = 1; i <= layers; i++) {
        // 前导空格(双倍间距)
        for (int j = 1; j <= 2*(layers - i); j++) {
            System.out.print("  ");
        }
        // 左半递减数列 
        for (int k = i; k >= 1; k--) {
            System.out.print(k  + " ");
        }
        // 右半递增数列 
        for (int m = 2; m <= i; m++) {
            System.out.print(m  + " ");
        }
        System.out.println(); 
    }
}

输出示例

        1 
      2 1 2 
    3 2 1 2 3 
  4 3 2 1 2 3 4 
5 4 3 2 1 2 3 4 5 

四、倒金字塔(逆向递减结构)

核心变化:外层循环采用逆序控制

public static void invertedPyramid(int layers) {
    for (int i = layers; i >= 1; i--) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        for (int k = 1; k <= 2*i-1; k++) {
            System.out.print("*"); 
        }
        System.out.println(); 
    }
}

输出示例

*********
 *******
  *****
   *** 
    *

五、字母金字塔(ASCII码转换)

拓展应用:将数字转换为字母序列

public static void alphaPyramid(int layers) {
    char start = 'A';
    for (int i = 1; i <= layers; i++) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        // 字母递增输出 
        for (int k = 0; k < i; k++) {
            System.out.print((char)(start  + k));
        }
        // 字母递减输出 
        for (int m = i-2; m >= 0; m--) {
            System.out.print((char)(start  + m));
        }
        System.out.println(); 
    }
}

输出示例

    A 
   ABA 
  ABCBA 
 ABCDCBA 
ABCDEDCBA 

六、菱形金字塔(组合结构)

组合策略:正金字塔+倒金字塔(去重中间层)

public static void diamond(int layers) {
    // 上半部分正金字塔 
    for (int i = 1; i <= layers; i++) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        for (int k = 1; k <= 2*i-1; k++) {
            System.out.print("*"); 
        }
        System.out.println(); 
    }
    // 下半部分倒金字塔(层数减1)
    for (int i = layers-1; i >= 1; i--) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        for (int k = 1; k <= 2*i-1; k++) {
            System.out.print("*"); 
        }
        System.out.println(); 
    }
}

 输出示例

    *
   *** 
  *****
 *******
*********
 *******
  *****
   *** 
    *

七、空心菱形(高级变体)

复合逻辑:空心条件判断+菱形结构

public static void hollowDiamond(int layers) {
    // 上半部分 
    for (int i = 1; i <= layers; i++) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        for (int k = 1; k <= 2*i-1; k++) {
            boolean isEdge = (k == 1 || k == 2*i-1);
            System.out.print(isEdge  ? "*" : " ");
        }
        System.out.println(); 
    }
    // 下半部分 
    for (int i = layers-1; i >= 1; i--) {
        for (int j = 1; j <= layers - i; j++) {
            System.out.print("  ");
        }
        for (int k = 1; k <= 2*i-1; k++) {
            boolean isEdge = (k == 1 || k == 2*i-1);
            System.out.print(isEdge  ? "*" : " ");
        }
        System.out.println(); 
    }
}

输出示例

    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *

扩展技巧表

优化方向实现方法应用场景
动态层数控制将固定数值改为方法参数所有金字塔类型
输出效率优化使用StringBuilder替代System.out大型金字塔(>50层)
字符变换修改输出字符的ASCII码计算方式特殊符号金字塔
图形镜像调整前导空格生成方向右对齐金字塔
三维金字塔增加z轴循环嵌套立体图形绘制

通过修改上述代码中的循环条件和输出字符,可以衍生出20余种金字塔变体。

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肺肺猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值