上一篇
Java怎么打印金字塔?
- 后端开发
- 2025-07-04
- 1
在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+环境。