上一篇
在Java中输出金字塔通常使用嵌套循环,外层控制行数,内层控制空格和星号打印,根据层数逐行输出空格和星号,形成金字塔形状,常用方法包括for循环和递归。
在Java中输出金字塔是一个常见的编程练习,主要通过嵌套循环控制空格和星号的排列实现,下面详细说明实现步骤、代码示例及原理:
金字塔输出原理
金字塔由空格和星号()组成,核心规律如下(假设金字塔有 n 层):
- 空格数量:每行的空格数 =
n - 当前行数 - 星号数量:每行星号数 =
2 × 当前行数 - 1 - 行数控制:外层循环控制总行数(从1到n)
示例(5层金字塔):

* // 行1: 4空格 + 1星号
*** // 行2: 3空格 + 3星号
***** // 行3: 2空格 + 5星号
******* // 行4: 1空格 + 7星号
********* // 行5: 0空格 + 9星号
完整代码实现
import java.util.Scanner;
public class PyramidPrinter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入金字塔的层数: ");
int n = scanner.nextInt();
// 外层循环:控制行数 (1到n)
for (int i = 1; i <= n; i++) {
// 内层循环1:打印左侧空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
// 内层循环2:打印星号
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
// 换行
System.out.println();
}
scanner.close();
}
}
关键代码解析
-
输入处理
Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 获取用户输入的层数
-
外层循环(控制行数)
for (int i = 1; i <= n; i++) { ... } // i表示当前行号 -
打印空格

for (int j = 1; j <= n - i; j++) { System.out.print(" "); // 每行空格数 = 总层数n - 当前行i } -
打印星号
for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); // 每行星号数 = 2×行数-1 }
运行示例
输入层数 5 时,输出:
扩展变体
- 倒金字塔:将外层循环改为
for (int i = n; i >= 1; i--) - 空心金字塔:在星号循环中加入条件判断,仅首尾行和每行首尾打印星号,中间打印空格:
for (int k = 1; k <= 2 * i - 1; k++) { if (k == 1 || k == 2 * i - 1 || i == n) { System.out.print("*"); } else { System.out.print(" "); } }
注意事项
- 输入验证:可添加逻辑确保层数为正整数(如
if (n > 0))。 - 性能优化:大层数时可用
StringBuilder替代直接打印。 - 对齐问题:若需居中对称,确保使用等宽字体(如IDE默认字体)。
通过此方法,您可灵活控制金字塔的层数、形状和样式,核心在于理解空格与星号的数学关系和循环嵌套的逻辑。

引用说明:本文代码基于Java标准库实现,原理参考经典算法设计模式,实践时请确保使用JDK 8+环境。
