/* ------模拟下图,打印一个7层镂空的菱形图形(必须为奇数层)如下图:
*
* *
* *
* *
* *
* *
*
------注意,通不要能过中间镂空的空格数规律来建立循环输出,这过于繁琐且易出错*/
public class L{
public static void main(String[] args){
int lay = 7; //层数,修改lay自由控制层数(此图形必须为奇数行)
int up = lay/2+1; //上半层
int low = lay-up; //下半层
for(int i=1; i<=up; i++){ //确定图形上半截行数;
for(int j=1; j<=up-i; j++)
System.out.print(" "); //按规律打印空格
//打印上半部分*号及其内部镂空的空格
for(int k=1; k<=(i-1)*2+1; k++){ //注意k的取值范围,上半行每行*号+空格的数量每行+=2;(与下半截相反)
if(i==1){ //判断是否为顶层
System.out.print("*"); //如果是,输出唯一一个*号
}
else{
//判断是否为中间各层的第一个或最后一个*号(中间层只有两个*号)
if(k==1 || k==(i-1)*2+1)
System.out.print("*");
else
System.out.print(" ");
}
}
System.out.println(); //每打印完一行后换行
}
//打印下半部分*号及其内部镂空的空格
for(int i=1; i<=low; i++){ //确定下半行数
for(int j=1; j<=i; j++)
System.out.print(" ");
for(int k=1; k<=(low-i)*2+1; k++){ //k的取值范围是重点,下半行每行*号+空格的数量每行-=2;
if(i==low){ //图形下半截最后一行
System.out.print("*");
break; //当达到最后一行时,输出最后一个空格终止该层循环(此后最外层循环也达到跳出条件)
}
else{
if(k==1 || k==(low-i)*2+1)
System.out.print("*");
else
System.out.print(" ");
}
}
System.out.println(); //每打印完一行后换行
}
}
}
/*----------------
*
* *
* *
* *
* *
* *
*
----------------*/
循环_高阶——打印镂空的菱形图形
最新推荐文章于 2023-05-19 10:47:52 发布