【使用Java循环输出菱形,空心金字塔】

news2024/11/28 16:41:04

使用Java循环输出图形的探索之旅

在这里插入图片描述

在这篇博客中,我们将探讨如何使用Java中的循环结构来输出各种几何图形,特别是金字塔和菱形。通过这一过程,不仅能够加深对循环的理解,还能提升编程能力。

1. 打印矩形

首先,我们从最简单的图形开始,矩形。我们使用嵌套循环来控制行和列的输出。

public class Stars {
    public static void main(String[] args) {
        // 外层循环控制行数
        for (int i = 1; i <= 5; i++) {
            // 内层循环控制每行的列数
            for (int j = 1; j <= 5; j++) {
                System.out.print("*"); // 打印星号
            }
            System.out.print("\n"); // 换行
        }
    }
}

输出:

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

2. 打印半个金字塔

接下来,我们将打印半个金字塔。这里的外层循环控制行数,而内层循环控制每行的星号数量。

public class Stars {
    public static void main(String[] args) {
        // 外层循环控制行数
        for (int i = 1; i <= 5; i++) {
            // 内层循环控制每行的星号数量
            for (int j = 1; j <= i; j++) {
                System.out.print("*"); // 打印星号
            }
            System.out.print("\n"); // 换行
        }
    }
}

输出:

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

3. 打印倒三角形

我们还可以打印倒三角形,通过调整循环的条件来实现。

public class Stars {
    public static void main(String[] args) {
        // 外层循环控制行数,从5开始递减
        for (int i = 5; i > 0; i--) {
            // 内层循环控制每行的星号数量
            for (int j = 1; j <= i; j++) {
                System.out.print("*"); // 打印星号
            }
            System.out.print("\n"); // 换行
        }
    }
}

输出:

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

4. 打印金字塔

4.1 不带空格的金字塔

现在我们来打印一个完整的金字塔。首先,不带空格的金字塔。

public class Stars {
    public static void main(String[] args) {
        // 外层循环控制行数
        for (int i = 1; i <= 5; i++) {
            // 内层循环控制每行的星号数量
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*"); // 打印星号
            }
            System.out.print("\n"); // 换行
        }
    }
}

输出:

*
***
*****
*******
*********
4.2 带空格的金字塔

接着,我们加入空格,使金字塔更美观。

public class Stars {
    public static void main(String[] args) {
        int totalLevel = 5; // 总层数
        // 外层循环控制行数
        for (int i = 1; i <= totalLevel; i++) {
            // 打印前置空格
            for (int k = 1; k <= totalLevel - i; k++) {
                System.out.print(" "); // 打印空格
            }
            // 打印星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*"); // 打印星号
            }
            System.out.print("\n"); // 换行
        }
    }
}

输出:

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

5. 打印空心金字塔

为了实现空心金字塔,我们需要对金字塔的星号输出进行改进。

public class Stars {
    public static void main(String[] args) {
        int totalLevel = 5; // 总层数
        // 外层循环控制行数
        for (int i = 1; i <= totalLevel; i++) {
            // 打印前置空格
            for (int k = 1; k <= totalLevel - i; k++) {
                System.out.print(" "); // 打印空格
            }
            // 打印星号
            for (int j = 1; j <= 2 * i - 1; j++) {
                // 打印空心部分
                if (j == 1 || j == (2 * i - 1) || i == totalLevel) {
                    System.out.print("*"); // 打印边缘星号
                } else {
                    System.out.print(" "); // 打印空格
                }
            }
            System.out.println(); // 换行
        }
    }
}

输出:

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

5.2 准备输出一个菱形

准备输出一个菱形, 空心金字塔已经是上半部分了,接下列完成下半部分即可

    //把 5 做成一个变量,进行更好的控制   int totalLevel = 5;
    
    public class Starts{
        public static void main(String[] args){
        	 int totalLevel = 9;  // 控制图形的层数
    
        	 //输出上半部分
            for(int i = 1; i <= totalLevel;i++){  //i 表示层数
                 // 
                
                //在输出* 之前,还要输出空格 对应空格等于 总层数 - 当前层
                 for(int k =1; k <= totalLevel-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(" ");
            		}
            			
            			 
            	}
            	//这里的println 会自动换行
            	System.out.println("");
            }
            
            
            //输出下半部分
            for(int i = totalLevel - 1; i > 0; i--){//控制下半部分的层数 依次递减
            	
            	for (int j = 1; j <= 2*i-1; j++){    //每层输出的* 个数
            		 
    
            			System.out.print("*");
            	 
            	}//这里的println 会自动换行
            	  System.out.println("");
            }
            
    
        }
    }
*
* *
*   *
*     *
*       *
*         *
*           *
*             *
*               *
***************
*************
***********
*********
*******
*****
***
*

6. 打印空心菱形

最后,我们扩展到空心菱形。我们将分为两个部分:上半部分和下半部分。

public class Starts{
    public static void main(String[] args){
    	 int totalLevel = 8;  // 控制图形的层数

    	 //输出上半部分
        for(int i = 1; i <= totalLevel;i++){  //i 表示层数
            
            //在输出* 之前,还要输出空格 对应空格等于 总层数 - 当前层
            for(int k =1; k <= totalLevel-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(" ");
        		}
        			
        			 
        	}
        	//这里的println 会自动换行
        	System.out.println("");
        }
        //输出下半部分
        for(int i = totalLevel - 1; i > 0; i--){//控制下半部分的层数
        	
        	//控制空格的输出
        	for(int k = 1; k <= totalLevel - i;  k++ ){  //空格数量 等于 总行数 - 层数   k < totalLevel - i; k = 1 ; 不成立所以不会输出第四行的空格
        		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(" ");
        		 }


        			
        	 
        	}//这里的println 会自动换行
        	  System.out.println("");
        }
        

    }
}

输出:

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

总结

通过这篇博客,我们深入探讨了使用Java循环输出各种图形的方法。掌握这些基本技巧不仅能提升我们的编程能力,还能为后续更复杂的编程挑战打下坚实的基础。希望你们能在实践中继续探索和创造出更多有趣的图形!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初级学习:Python实现AI并搭建

随着人工智能(AI)的迅猛发展,越来越多的人希望能够学习如何通过编程实现AI应用。Python,因为其简洁易用,被广泛认为是AI开发的理想编程语言。本文将介绍Python在AI开发中的基础应用,帮助初学者入门并构建自己的AI项目。 为什么选择Python 在了解如何用Python实现AI之前,…

探索 Python 装饰器的终极利器:wrapt 库

文章目录 探索 Python 装饰器的终极利器&#xff1a;wrapt 库背景&#xff1a;装饰器的进化之旅初识 wrapt&#xff1a;它究竟是什么&#xff1f;安装 wrapt&#xff1a;简单几步&#xff0c;轻松上手函数的魔法&#xff1a;wrapt 的简单使用创建简单装饰器装饰器的高级用法&am…

浅谈导热油蒸汽发生器在电子及半导体行业中应用

导热油蒸汽发生器在电子或半导体行业制造过程中有着广泛的应用。为促进温控行业交流发展上海中壹展览等于十二月在上海举办主办首届“TCU China温控展”。以下是一些具体的应用场景和优势&#xff1a; 应用场景 1.清洗与洁净室控制: 半导体生产过程中&#xff0c;生产设备和工…

TikTok代理IP全面使用指南

对于那些希望通过社交媒体打造个人品牌的人来说&#xff0c;TikTok是现在热门的平台&#xff0c;他的流量与曝光不可小觑&#xff0c;相信很多跨境营销会选择他进行多账号营销。问题是&#xff0c;TikTok多账号很容易遇到封禁问题&#xff0c;那么如何解决&#xff1f; 一、什么…

第十三章 RabbitMQ之消息幂等性

目录 一、引言 二、消息幂等解决方案 2.1. 方案一 2.2. 方案二 一、引言 幂等是一个数学概念&#xff0c;用函数表达式来描述是这样的&#xff1a;f(x) f(f(x)) 。在程序开发中&#xff0c;则是指同一个业务&#xff0c;执行一次或多次对业务状态的影响是一致的。有些业务…

3款逆天级Word插件,一键解决文档排版烦恼

在当今快节奏的工作环境中&#xff0c;高效的文档处理能力至关重要&#xff0c;今天电脑天空将为大家介绍三款卓越的Word插件&#xff0c;它们能显著提升你的写作效率&#xff0c;让您的工作成果更加出色。 1. 文档排版利器&#xff1a;小恐龙公文排版助手 小恐龙公文排版助手…

Chromium 如何查找已经定义的mojom函数实现c++

进程通信定义通常都是用.mojom文件或者idl文件格式 以content\common\frame.mojom里面的BeginNavigation函数为例。 一、如何查找BeginNavigation函数定义&#xff0c;在vscode里面直接搜索BeginNavigation&#xff0c;过滤条件 *.idl,*.mojom,*.cc 效果&#xff1a; 这样…

HECTOR:一种新型多模态深度学习模型用于预测子宫内膜癌复发风险|顶刊精析·24-10-12

小罗碎碎念 这篇文章是关于一项名为HECTOR&#xff08;histopathology-based endometrial cancer tailored outcome risk&#xff09;的研究&#xff0c;它是一个基于多模态深度学习的预测模型&#xff0c;用于预测子宫内膜癌&#xff08;EC&#xff09;的复发风险。 作者角色作…

threejs-加载gltf模型

一、介绍 1.概念 glTF&#xff08;gl传输格式&#xff09;是一种开放格式的规范 &#xff08;open format specification&#xff09;&#xff0c; 用于更高效地传输、加载3D内容。该类文件以JSON&#xff08;.gltf&#xff09;格式或二进制&#xff08;.glb&#xff09;格式提…

常用的web服务器简述

一.Web服务器介绍 ‌Web服务器是一种运行于互联网上的计算机硬件或软件&#xff0c;用于存储、处理和传输网页和其他网站内容。‌ 它通常运行在服务器上&#xff0c;绑定服务器的IP地址并监听某一个TCP端口&#xff0c;接收来自客户端的请求&#xff0c;然后向客户端发送所请求…

中国地级市生态韧性数据及城市生态韧性数据(2000-2022年)

一测算方式&#xff1a; 参考C刊《管理学刊》楚尔鸣&#xff08;2023&#xff09;老师的做法&#xff0c;城市生态韧性主要衡量一个城市在面临生态环境系统压力或突发冲击时&#xff0c;约束污染排放、维护生态环境状态和治理能力提升的综合水平。 参考郭海红和刘新民的研究&a…

JavaScript操作DOM对象

DOM 是 JavaScript 操作网页的接口&#xff0c;全称为“文档对象模型” &#xff08;Document Object Model&#xff09;。它的作用是将网页转为一个 JavaScript 对象&#xff0c;从而可以用脚本进行各种操作&#xff08;比如对元素增删 内容&#xff09; 节点的类型有七…

基于STM32的智能家居--硬件接线

分配GPIO 1.首先分配串口通讯引脚&#xff0c;该开发板中有三组串口引脚分别分配如图所示。 2.分配SPI。 3.其他为普通GPIO口&#xff0c;B8,B9模拟IIC协议与OLED屏幕进行通讯。

GEE数据集:美国玉米、大豆和冬小麦 QDANN 30m 产量图/数据集

目录 QDANN 30m Yield Map for Corn, Soy, and Winter Wheat in the U.S美国玉米、大豆和冬小麦 QDANN 30m 产量图 简介 数据集预处理 代码 引用 许可 QDANN 30m Yield Map for Corn, Soy, and Winter Wheat in the U.S美国玉米、大豆和冬小麦 QDANN 30m 产量图 简介 …

指针——数组(指针)传参

&#xff08;一&#xff09;前文问题答案解析 1、代码 int(*pa[10])[5] 的解析 某人&#xff1a;嗯&#xff0c;有*pa&#xff0c;这不很明显是个指针嘛&#xff0c;然后 [5] 说明是个数组指针&#xff0c;int类型&#xff0c;[10]。。。。 这这这&#xff0c;很明显不是指针。…

【笔记】Day2.3.3自定义异常+2.3.4resource注入

此项目一共写了两个自定义异常 因为&#xff1a; 1.前后端交互的响应码&#xff08;如200&#xff0c;401&#xff09;大差不差 区别几乎只在于响应结果中的msg和code表达是否成功 2.而微服务的接口之间调用采用restful方式 状态码要使用标准的http状态码 如&#xff1a;200…

【Linux探索学习】第四弹——Linux权限管理详解:理解用户、组和权限之间的关系

前言&#xff1a; 在前面我们已经学习了Linux的基础指令&#xff0c;相信大家对Linux已经有了一定的认识&#xff0c;今天我们来学习Linux权限的相关知识点&#xff0c;Linux权限是Linux初学者必须要掌握的内容 目录 一、Linux下用户类型 二、权限基本概念 三、权限的表示 四…

SpringBoot整合web中使用jsp

1、在pom.xml文件中导入jsp依赖的jar包&#xff0c;一个是jstl标签&#xff0c;一个是jsp的引擎 <dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-spec</artifactId><version>1.2.5</version> <…

窗口售票系统1.0版本

本窗口售票系统实现了三个售票窗口的随机售票&#xff0c;实现随机到某一个窗口买票&#xff0c;总票余量都会减少&#xff0c;即三个窗口共享同一个票余量。若票余量小于一次性购票量&#xff0c;则提示报错&#xff1b;若车票售罄&#xff0c;则代码结束运行。 代码实现&…