上一篇
Java中,可以使用嵌套循环来输出金字塔。
Java输出金字塔的基本原理
在Java中,输出金字塔通常涉及到嵌套循环的使用,外层循环控制行数,内层循环控制每行的空格和星号()的数量,通过调整空格和星号的数量,可以形成不同形状的金字塔。
基本金字塔的实现
固定行数的金字塔
假设我们要输出一个5行的金字塔,每行的星号数量递增,空格数量递减。
public class Pyramid {
public static void main(String[] args) {
int rows = 5; // 金字塔的行数
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 i 1; k++) {
System.out.print("");
}
// 换行
System.out.println();
}
}
}
输出结果:
动态行数的金字塔
用户输入行数,程序根据输入的行数输出金字塔。
import java.util.Scanner;
public class DynamicPyramid {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入金字塔的行数: ");
int rows = scanner.nextInt();
scanner.close();
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 i 1; k++) {
System.out.print("");
}
// 换行
System.out.println();
}
}
}
不同类型的金字塔
倒金字塔
倒金字塔与正金字塔类似,只是行数和空格、星号的数量相反。

public class InvertedPyramid {
public static void main(String[] args) {
int rows = 5;
for (int i = rows; i >= 1; i--) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 i 1; k++) {
System.out.print("");
}
// 换行
System.out.println();
}
}
}
输出结果:
空心金字塔
空心金字塔只有边缘有星号,内部为空。
public class HollowPyramid {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 i 1; k++) {
if (k == 1 || k == 2 i 1 || i == rows) {
System.out.print("");
} else {
System.out.print(" ");
}
}
// 换行
System.out.println();
}
}
}
输出结果:
使用函数封装金字塔输出
为了提高代码的复用性,可以将金字塔的输出逻辑封装成一个函数。

public class PyramidFunction {
public static void printPyramid(int rows) {
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印星号
for (int k = 1; k <= 2 i 1; k++) {
System.out.print("");
}
// 换行
System.out.println();
}
}
public static void main(String[] args) {
int rows = 5;
printPyramid(rows);
}
}
金字塔的变种
数字金字塔
将星号替换为数字,形成数字金字塔。
public class NumberPyramid {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印数字
for (int k = 1; k <= 2 i 1; k++) {
System.out.print(i);
}
// 换行
System.out.println();
}
}
}
输出结果:
1
222
33333
4444444
555555555
字母金字塔
使用字母代替星号,形成字母金字塔。
public class AlphabetPyramid {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
// 打印字母
for (int k = 1; k <= 2 i 1; k++) {
System.out.print((char)('A' + i 1));
}
// 换行
System.out.println();
}
}
}
输出结果:

A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
使用二维数组输出金字塔
可以通过二维数组来存储金字塔的形状,然后逐行输出。
public class ArrayPyramid {
public static void main(String[] args) {
int rows = 5;
char[][] pyramid = new char[rows][2 rows 1];
// 初始化数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 2 rows 1; j++) {
if (j >= rows i 1 && j <= rows i 1 + 2 i) {
pyramid[i][j] = '';
} else {
pyramid[i][j] = ' ';
}
}
}
// 输出数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 2 rows 1; j++) {
System.out.print(pyramid[i][j]);
}
System.out.println();
}
}
}
归纳与注意事项
- 循环控制:外层循环控制行数,内层循环控制每行的空格和星号数量,确保循环变量的正确范围。
- 空格与星号的关系:每行的空格数量通常为总行数减去当前行数,星号数量为当前行数的两倍减一。
- 输出格式:每行输出后需要换行,可以使用
System.out.println()。 - 代码复用:将金字塔的输出逻辑封装成函数,可以提高代码的复用性和可读性。
- 边界情况:处理用户输入时,需要考虑输入的合法性,如行数不能为负数或零。
相关问答FAQs
Q1:如何修改代码以输出倒金字塔?
A1:要输出倒金字塔,只需将外层循环的顺序改为从总行数递减到1,并相应调整空格和星号的数量。
for (int i = rows; i >= 1; i--) {
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 i 1; k++) {
System.out.print("");
}
System.out.println();
}
Q2:如何输出一个空心的金字塔?
A2:要输出空心的金字塔,需要在打印星号的循环中添加条件判断,只有当是每行的第一个、最后一个位置或最后一行时才打印星号,否则打印空格。
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= rows i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= 2 i 1; k++) {
if (k == 1 || k == 2 i 1 || i == rows) {
System.out.print("");
} else {
System.out.print(" ");
}
}
System.out.
