运行效果
控制台输入需要打印的上半层的行数
请输入需要打印的上半层的层数: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();
}
}
}