流程图如下
![](https://img-blog.csdnimg.cn/b6384c5eebee42008412f6f0a9a6b8a7.png)
文字描述
1 定义一个int变量total(层数)=5;
2定义int变量i=1,判断i是否小于等于total 为真执行循环体
3 循环体:定义int变量k=1;判断k(k代表*号前的空格)是否小于total为真输出*号前所需空格,k自增,直到为假跳出循环
4再到下一个循环定义int j(j代表输出多少个*号) =1 判断j是否小于等于2*i-1为真走判断j是否等于1或j是否等于2*i-1或i等于total(判断*号是否是第一个以及最后一个以及最后一行全部输出)为真输出*号,为假输出空格,j自增回到j是否小于等于2*i-1为假走换行。
5 i自增回到循环i是否小于等于total 为假结束循环。
代码如下(for循环以及while循环)
package 课堂练习;
public class 练习16{
public static void main(String[] args){
int total = 5 ;
for(int i =1; i <= total; i++){
for(int k =1; k <= total - i; k++){
System.out.print(" ");
}
for(int j = 1; j <= 2 * i -1; j++){
if(j == 1 || j == 2*i-1 || i==total){
System.out.print("*");}else{
System.out.print(" ");
}
}System.out.print("\n");
}
System.out.println("————————");
int number = 1;
while(number <= total){
int space = 1;
while( space <= total - number ){
System.out.print(" ");
space++;
}
int asterisk = 1;
while(asterisk <= 2 * number -1){
if(asterisk == 1 || asterisk == 2*number-1 || number==total){
System.out.print("*");}else{
System.out.print(" ");
}
asterisk++;
}
number++;
System.out.print("\n");
}
}
}
代码演示: