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

使用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();
        }
    }
}

代码结果显示:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值