上一篇                     
               
			  怎么用java输出金字塔
- 后端开发
- 2025-07-18
- 3455
 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. 
 
  
			