目标为打印空心的金字塔
将此目标拆分
1. 打印半个金字塔 4层
* 1层 1个*
** 2层 2个*
*** 3层 3个*
**** 4层 4个*
for(int i = 1; i <= 4; i++){
for(int j = 1; j <= i; j++){
System.out.print("*");
}
System.out.println();
}
2. 打印整个金字塔 4层
* 1层 = 1* 2 * 1 - 1 空格3 总层数(4)-当前层(1) = 3
*** 2层 = 3* 2 * 2 - 1 空格2 总层数(4)-当前层(2) = 2
***** 3层 = 5* 2 * 3 - 1 空格1 总层数(4)-当前层(3) = 1
******* 4层 = 7* 2 * 4 - 1 空格0 总层数(4)-当前层(4) = 0
for(int i = 1; i <= 4; i++){
for(int k = 1; k <= 4 - i;k++){
System.out.print(" ");
}
for(int j = 1; j <= 2 * i - 1; j++){
System.out.print("*");
}
System.out.print();
}
3. 打印空心金字塔 4层
*
* *
* *
*******
前3层中间是空的,只有第一行和最后一行输*,其他输空格
for(int i = 1; i <= 4; i++){
for(int k = 1; k <= 4 - i;k++){
System.out.print(" ");
}
for(int j = 1; j <= 2 * i - 1; j++){
/*第一个位置和最后一个位置输*其他输空格
*最后一行全部输*
*j==1判断是否为第一行
*j == 2 * i - 1判断是否为最后一行
*i == 4判断是否为最后一层
*/
if(j == 1 || j == 2 * i -1 || i == 4){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
运行结果: