import java.util.Scanner;
public class MuForExercise04 {
public static void main (String [] args){
//打印
//任意行
//空心金字塔
Scanner sc = new Scanner(System.in); //创建scanner对象
System.out.println("请输入想要打印的空心金字塔的层数:");//输出提示语句
int n = sc.nextInt();//接收对象并保存在 int变量n中
//思路
//先打印出5*5实心的金字塔 实心细节看上一个打印实心金字塔的案例
//在根据组成规律
// 镂空
// * //第1层 有1个* 当前行的第一个*位置 和最后一个*位置
// * * //第2层 有1个* 当前行的第一个*位置 和最后一个*位置
// * * //第3层 有1个* 当前行的第一个*位置 和最后一个*位置
// * * //第4层 有1个* 当前行的第一个*位置 和最后一个*位置
// ********* //第5层 有9个* 当前行所有*位置
//由此可得规律
//每一行的镂空位置:除了原本*位置的头尾位置,其他都镂空
// 最后一行除外
//最后一行*个数如实心金字塔个数不变
for(int i=1;i<=n;i++){//外层循环 控制行数 注意 从此行开始 只连续嵌套了两层for 并没有四层不要看错
for(int j=n;j-i>=1;j--){ //内层循环 在每层输入*之前先输出 总层数 -当前层数 个 空格
System.out.printf(" ");
}
for(int k=1;k<=2*i-1;k++){//内层循环 控制每层*数量
if(i!=n){//判断是否为最后一行 不是则进入if内语句
if(k==1 || k==2*i-1){//每行原本*位置的头尾位置打印*
System.out.printf("*");
}else{//除了最后一行,每一行的空格部分
System.out.printf(" ");
}
}else{//打印最后一行*
System.out.printf("*");
}
}
for(int r=n;r-i>=1;r--){ //内层循环 在每层输入*之后输出 总层数 -当前层数 个 空格
System.out.printf(" ");
}
System.out.println(" ");//输出行与行之间的空格
}
}
}
Java打印空心金字塔
最新推荐文章于 2024-04-26 05:34:36 发布