Java金字塔、空心金字塔、空心菱形

Java金字塔

java 复制代码
public class TestDemo01 {
    public static void main(String[] args){
        //第一个for用于每行输出 从i=1开始到i<=5,总共5行
        for(int i=1;i<=5;i++){

            //每行前缀空格,这个for用于表示每行输出*前面的空格
            //从上面规律可得,每行输出的空格数为总层数,可以用5-i表示
            for(int k=1;k<=5-i;k++){
                System.out.print(" ");
            }
            //每行*号,可以发现每行输出的*为当前层*2-1,所以用2*i-1表示
            for(int j=1;j<=2*i-1;j++){
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

空心金字塔

java 复制代码
public class TestDemo01 {
    public static void main(String[] args){
       //行数
        for(int i=1;i<=5;i++){

            //每行前缀空格
            for(int k=1;k<=5-i;k++){
                System.out.print(" ");
            }
            //每行*号
            for(int j=1;j<=2*i-1;j++){
                //使用if做判断j==1时是首输出*,j==2*i-1为尾,i==5表示最后一行
                    if(j==1||j==2*i-1||i==5){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
            }

            System.out.println();
        }
}

空心菱形

相信有了以上基础后,写一个空心菱形不难,本质上就是将正空心金字塔倒过来,然后2个金字塔拼接起来,具体代码如下

java 复制代码
public class TestDemo01 {
    public static void main(String[] args){
       //行数
        for(int i=1;i<=5;i++){

            //每行前缀空格
            for(int k=1;k<=5-i;k++){
                System.out.print(" ");
            }
            //每行*号
            for(int j=1;j<=2*i-1;j++){
                    if(j==1||j==2*i-1){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
            }

            System.out.println();
        }

       for(int i = 1,j=5;i<=5;i++,j--){

            for (int k=1;k<i;k++){
                System.out.print(" ");
            }

            for(int z=1;z<=2*j-1;z++){
                if(z==1||z==(2*j-1)){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }

            }
            System.out.println();
        }

    }
}
相关推荐
fengci.9 分钟前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
MC皮蛋侠客14 分钟前
SQLAlchemy 系列(八):AsyncIO、并发与 Web 生命周期——让每个并发任务持有自己的 Session
数据库·python
前端 贾公子20 分钟前
第06章:结构化输出 (上)
java·服务器·前端
程序员zgh23 分钟前
C++ 拷贝赋值运算符 详解
c语言·开发语言·c++
念何架构之路27 分钟前
restartmanager-重启管理子系统
java·开发语言
Java内核笔记41 分钟前
告别第三方库!Spring Boot 4 原生 API 版本控制全解析:4 种策略 + 实战案例
java·后端
小小洋洋1 小时前
OpenWrt 从U盘迁移到内置 eMMC,并完成扩容与 Docker 安装
java·docker·eureka
SomeB1oody1 小时前
【RustyML入门】2.0. 经典机器学习
开发语言·后端·机器学习·rust·教程
大数据魔法师1 小时前
Python 网络请求库 curl_cffi:从入门到实战,如何规避网站指纹检测
python·数据分析
就改了1 小时前
SpringBoot 自定义线程池 + 实时监控指标
java·spring boot·后端