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

使用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循环输出各种图形的方法。掌握这些基本技巧不仅能提升我们的编程能力,还能为后续更复杂的编程挑战打下坚实的基础。希望你们能在实践中继续探索和创造出更多有趣的图形!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yhame.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值