使用for循环语句输出以下“空心菱形”效果:
*
* *
* *
* *
* *
* *
* *
* *
*
建议优先参考笔者的另一篇文章:《for循环输出菱形的形状【java】》
代码:
/*
*
* *
* *
* *
* *
* *
* *
* *
*
分析:
上图形似于实心菱形
*
***
*****
*******
*********
*******
*****
***
*
在菱形图案基础之上,将每行的第一颗和最后一颗星星输出,其他星星使用空格输出即可。
*/
public class StarTree
{
public static void main(String[] args){
int layer = 5;
// 一、上层(显示 layer 行)
for(int i=1;i<=layer;i++){
// 1、获取空格需要显示数量
int spaceNum = layer-i;
for(int j=1;j<=spaceNum;j++){ // 需要打印空格的数量
System.out.print(" ");
}
// 2、获取星星需要显示的数量
int starNum = 2*i-1;
for(int j=1;j<=starNum;j++){ // 需要每行打印的数量
if(j==1||j==starNum){ // 每行第一颗和最后一颗星星打印
System.out.print("*");
}else{ // 每行非第一颗和非最后一颗星星打印成空格
System.out.print(" ");
}
}
// 3、换行
System.out.println();
}
// 二、下层
for(int i=(layer-1);i>=1;i--){
int sapceNum = layer-i; // 获取到每行显示空格的数量与行数i之间的关系
for(int j=1;j<=sapceNum;j++){
System.out.print(" ");
}
int starNum = 2*i-1; // 获取到每行显示星星的数量与行数i之间的关系
for(int j=1;j<=starNum;j++){
if(j==1||j==starNum){ // 每行第一颗和最后一颗星星打印
System.out.print("*");
}else{ // 每行非第一颗和非最后一颗星星打印成空格
System.out.print(" ");
}
}
System.out.println();
}
}
}
代码结果显示: