运行效果
控制台输入需要打印的上半层的行数
请输入需要打印的上半层的层数:8 * *** ***** ******* ********* *********** ************* *************** ************* *********** ********* ******* ***** *** *
代码
// 导包 package top.gaojc.test; import java.util.Scanner; // 声明一个类名为Test_01的类 public class Test_01 { // main方法 程序入口 public static void main(String[] args) { // 键盘录入 Scanner sc = new Scanner(System.in); // 获取输入值 System.out.print("请输入需要打印的上半层的层数:"); int tier = sc.nextInt(); // 上半层 每一行的循环 for (int i = 0; i < tier; i++) { /*这里可以得知空格的数量是由tier-i得来 tier为输入的行数 i是做++操作 好比输入的行数为6 i为0 i做++操作 那么 6-0 6-1 6-2 6-3... 结果就是6 5 4 3... 得来的结果就是空格的数量 故每行空格的数量是由tier-i得来 也就是做的--操作*/ for (int j = (tier - i); j > 0; j--) { System.out.print(" "); } /*这里的*的个数是由(i * 2 + 1)得来 i初始值为0 i做++操作 0*2+1=1 1*2+1=3 2*2+1=5... 结果1 3 5... 故*的个数是由(i * 2 + 1)得来*/ for (int j = (i * 2 + 1); j > 0; j--) { System.out.print("*"); } // 换行 System.out.println(); } // 下半层 每一行的循环 for (int i = tier - 2; i >= 0; i--) { // 每行的空格数量随着行数-1而+1 /*这里空格的个数是由(tier - 1 - i)得来 假设输入行数为6 则tier=6 i=6-2 i做--操作 6-1-4=1 6-1-3=2 6-1-2=3... 故空格的个数是由(tier - 1 - i)得来 ++操作 结果1 2 3 4... */ for (int k = (tier - 1 - i); k >= 0; k--) { System.out.print(" "); } /* 这里的*的个数是是由(i * 2 + 1)得来的 i=行数-2 i做--操作 还是假设输入的行数是6 那么*个数=(6-2)*2-1= 7 (6-2-1)*2-1= 5 (6-2-1-1)*2-1= 3... 结果是7 5 3...*/ for (int j = (i * 2 + 1); j > 0; j--) { System.out.print("*"); } // 换行 System.out.println(); } } }