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.
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/66195.html