一道关于java打印星星的练习题

  1. 先打印倒三角,再打印正三角

  2. 不论是倒三角还是正三角,都是打印一行一行的星星。所以,打印一行星星的逻辑是一样的,都是先打印前面的空格,然后再打印后面的星星。

  3. 有了这个整体的逻辑之后 ,再去想怎么实现打印前面的空格的逻辑是什么,打印一行星星的逻辑是什么,这样代码写起来就比较清晰了。


public class Main {



    public static void main(String[] args) throws Exception {

        printStar(3);

    }



    /**

     * 打印一个倒三解和一个正三角

     * @param oneTriangleTotalLine 一个三角形的总行数

     */

    public static void printStar(int oneTriangleTotalLine) {

        // 打印倒三角

        for (int currentLine = oneTriangleTotalLine; currentLine > 0; currentLine--) {

            printFrontSpace(oneTriangleTotalLine, currentLine);

            printOneLineStar(currentLine, oneTriangleTotalLine > 1);

        }



        // 打印正三角

        for (int currentLine = 2; currentLine <= oneTriangleTotalLine; currentLine++) {

            printFrontSpace(oneTriangleTotalLine, currentLine);

            printOneLineStar(currentLine, currentLine < oneTriangleTotalLine);

        }

    }



    /**

     * 打印一行星星

     * @param currentLine 当前是第几行的星星

     * @param needBr 是否需要换行

     */

    private static void printOneLineStar(int currentLine, boolean needBr) {

        int starCount = 1 + (currentLine - 1) * 2;

        for (int i = 0; i < starCount; i++) {

            System.out.print("*");

            if (i < (starCount - 1)) {

                // 如果不是一行中的最后一稞星,则还需要输出一个空格

                System.out.print(" ");

            }

        }



        if (needBr) {

            // 需要换行

            System.out.println();

        }

    }



    /**

     * 打印一行星星前面的空格

     * @param oneTriangleTotalLine 一个三角形的总行数

     * @param currentLine 当前是第几行

     */

    private static void printFrontSpace(int oneTriangleTotalLine, int currentLine) {

        int spaceCount = (oneTriangleTotalLine - currentLine) * 2;

        for (int i = 0; i < spaceCount; i++) {

            System.out.print(" ");

        }

    }





### 最后

由于文案过于长,在此就不一一介绍了,**这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存**等等知识详解。

![image](https://img-blog.csdnimg.cn/img_convert/4066d25cd3dbe4b2a553cdf317daf313.webp?x-oss-process=image/format,png)

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,**其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。**

![image](https://img-blog.csdnimg.cn/img_convert/af829ab8396a8cfc73de8cf888e0dcdc.webp?x-oss-process=image/format,png)

![image](https://img-blog.csdnimg.cn/img_convert/063f6fb050e0ec183f1cd4b402b2c507.webp?x-oss-process=image/format,png)

容对你会有一个质的提升,**其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。**

[外链图片转存中...(img-qVvb3vFT-1714546718075)]

[外链图片转存中...(img-O7O9Oh3G-1714546718076)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值