for循环输出菱形的形状【java】

时间:2023-03-09 02:43:24
for循环输出菱形的形状【java】

使用for循环语句输出以下“菱形”效果:

    *
***
*****
*******
*********
*******
*****
***
*

代码  

 /*
*
***
*****
*******
*********
*******
*****
***
* 分析:
- 上层(共5层)
每层构成:每层每层空格数+每层星星数
第1层 -- 空格数:4 + 星星数:1
第2层 -- 空格数:3 + 星星数:3
第3层 -- 空格数:2 + 星星数:5
第4层 -- 空格数:1 + 星星数:7
第5层 -- 空格数:0 + 星星数:9 分析:
第1层 -- 空格数:4(= 5-1) + 星星数:1(= 2*1-1)
第2层 -- 空格数:3(= 5-2) + 星星数:3(= 2*2-1)
第3层 -- 空格数:2(= 5-3) + 星星数:5(= 2*3-1)
第4层 -- 空格数:1(= 5-4) + 星星数:7(= 2*4-1)
第5层 -- 空格数:0(= 5-5) + 星星数:9(= 2*5-1) 推理:(上层共 layer 层)
第i层 -- (空格数 = layer-i) + (星星数 = 2*i-1) - 下层(下层共 layer-1 层)
第1层 -- 空格数:1 + 星星数:7
第2层 -- 空格数:2 + 星星数:5
第3层 -- 空格数:3 + 星星数:3
第4层 -- 空格数:4 + 星星数:1 分析:效果等效(共4层)
下层的第1层对应上层的第4层 -- 空格数:1 + 星星数:7
下层的第2层对应上层的第3层 -- 空格数:2 + 星星数:5
下层的第3层对应上层的第2层 -- 空格数:3 + 星星数:3
下层的第4层对应上层的第1层 -- 空格数:4 + 星星数:1 推理:
第i层 -- (空格数 = i) + (星星数 = 2*(layer-i)-1)
*/ 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++){ // 需要打印星星的数量
System.out.print("*");
}
// 3、换行
System.out.println();
} // 二、下层(显示 layer-1 行)
for(int i=1;i<layer;i++){ // 1、获取空格需要显示数量
int spaceNum = i;
for(int j=1;j<=spaceNum;j++){
System.out.print(" ");
}
// 2、获取星星需要显示的数量
int starNum = 2*(layer-i)-1;
for(int j=1;j<=starNum;j++){
System.out.print("*");
}
// 3、换行
System.out.println(); }
}
}

代码结果显示:

for循环输出菱形的形状【java】