0
点赞
收藏
分享

微信扫一扫

空心金字塔的实现:化繁为简,先死后活

毅会 2022-04-15 阅读 24
java

1.先打印一个矩形

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

package example;

public class Stars {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=1;i<=5;i++) {
			System.out.println("*****");
		}
		
	}

}

2.打印半个金字塔

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

package example;

public class Stars {
	/**
	  
	   *           //第1层  有1个*               
       **          //第2层  有2个*
       ***         //第3层  有3个*
       ****        //第4层  有4个*
       *****       //第5层  有5个*
       
	 */

	public static void main(String[] args) {
		
		//i表示层数
		for(int i=1;i<=5;i++) {
			//控制打印每层的*个数
			for(int j=1;j<=i;j++) {
			System.out.print("*");
		}
			//每打印一层的*后,就换行
			System.out.print("\n");
		}
		
	}

}

3.打印整个金字塔

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

package example;

public class Stars {
	/**
	 化繁为简:
	  1.打印一个矩形
	  *****
      *****
      *****
      *****
      *****
	  
	  2.打印半个金字塔
	   *           //第1层  有1个*               
       **          //第2层  有2个*
       ***         //第3层  有3个*
       ****        //第4层  有4个*
       *****       //第5层  有5个*
       
      3.打印整个金字塔
       *           //第1层  有1个*   1*2-1=1  空格数量4            
      ***          //第2层  有3个*   2*2-1=3  空格数量3
     *****         //第3层  有5个*   3*2-1=5  空格数量2
    *******        //第4层  有7个*   4*2-1=7  空格数量1
   *********       //第5层  有9个*   5*2-1=9  空格数量0
                 可发现每层*的个数为 层数*2-1  空格数量为 总层数-层数
       
	 */

	public static void main(String[] args) {
		
		//i表示层数
		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++) {
			System.out.print("*");
		}
			//每打印一层的*后,就换行
			System.out.print("\n");
		}
		
	}

}

4.打印空心金字塔

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

package example;

public class Stars {
	/**
	 化繁为简:
	  1.打印一个矩形
	  *****
      *****
      *****
      *****
      *****
	  
	  2.打印半个金字塔
	   *           //第1层  有1个*               
       **          //第2层  有2个*
       ***         //第3层  有3个*
       ****        //第4层  有4个*
       *****       //第5层  有5个*
       
      3.打印整个金字塔
       *           //第1层  有1个*   1*2-1=1  空格数量4            
      ***          //第2层  有3个*   2*2-1=3  空格数量3
     *****         //第3层  有5个*   3*2-1=5  空格数量2
    *******        //第4层  有7个*   4*2-1=7  空格数量1
   *********       //第5层  有9个*   5*2-1=9  空格数量0
                 可发现每层*的个数为 层数*2-1  空格数量为 总层数-层数
      4.打印空心金字塔
       *           //第1层  有1个*     当前行第一个为*,最后一个也为*           
      * *          //第2层  有2个*     当前行第一个为*,最后一个也为* 
     *   *         //第3层  有2个*     当前行第一个为*,最后一个也为* 
    *     *        //第4层  有2个*     当前行第一个为*,最后一个也为* 
   *********       //第5层  有9个*     全部为*
      
                        
            
	 */

	public static void main(String[] args) {
		
		//i表示层数
		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) {
			         System.out.print("*");
			}else {   //其他情况输出空格
				System.out.print(" ");
			}
		}
			//每打印一层的*后,就换行
			System.out.print("\n");
		}
		
	}

}

 5.层数做成变量

package example;

public class Stars {
	/**
	 化繁为简:
	  1.打印一个矩形
	  *****
      *****
      *****
      *****
      *****
	  
	  2.打印半个金字塔
	   *           //第1层  有1个*               
       **          //第2层  有2个*
       ***         //第3层  有3个*
       ****        //第4层  有4个*
       *****       //第5层  有5个*
       
      3.打印整个金字塔
       *           //第1层  有1个*   1*2-1=1  空格数量4            
      ***          //第2层  有3个*   2*2-1=3  空格数量3
     *****         //第3层  有5个*   3*2-1=5  空格数量2
    *******        //第4层  有7个*   4*2-1=7  空格数量1
   *********       //第5层  有9个*   5*2-1=9  空格数量0
                 可发现每层*的个数为 层数*2-1  空格数量为 总层数-层数
      4.打印空心金字塔
       *           //第1层  有1个*     当前行第一个为*,最后一个也为*           
      * *          //第2层  有2个*     当前行第一个为*,最后一个也为* 
     *   *         //第3层  有2个*     当前行第一个为*,最后一个也为* 
    *     *        //第4层  有2个*     当前行第一个为*,最后一个也为* 
   *********       //第5层  有9个*     全部为*
      
      先死后活:
      5.层数做成变量 int totalLevel = 10                    
            
	 */

	public static void main(String[] args) {
		
		int totalLevel = 10;
		//i表示层数
		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.print("\n");
		}
		
	}

}

6.扩展题:打印一个 空心菱形

 思路分析:把空心菱形分成两部分,即上三角与下三角。上三角通过上面的练习我们已经知道怎么去编写程序了,模仿上三角写下三角。

package example;

public class Rhombus {

	public static void main(String[] args) {
		// 打印上三角
		for(int i = 1;i<=5;i++) {           //i表示上三角的层数
			//打印*之前要先打印空格k,输出每层对应的空格5-i
			for(int k = 1;k<=5-i;k++) {   
				System.out.print(" ");
			}
			//控制打印每层的*个数
			for(int j = 1;j<=2*i-1;j++) {  //j为实心菱形情况下第几个*
				if(j ==1||j==2*i-1) {
					//当前行第一个为*,最后一个也为* 
					System.out.print("*");
				}else {   //其他情况输出空格
					System.out.print(" ");
				}
				
			}
			System.out.print("\n");
		}
		
		//打印下三角
		for(int x=1;x<=4;x++) {  //x最高只能看成4层
			//打印*之前要先打印空格z,输出每层对应的空格x
			for(int z=1;z<=x;z++) {
			System.out.print(" ");
			}
			//控制打印每层的*个数
			for(int y=1;y<=9-2*x;y++) {  //y为实心菱形情况下第几个*
				if(y ==1||y ==9-2*x) {
				//当前行第一个为*,最后一个也为* 
				System.out.print("*");
		     }else {    //其他情况输出空格
		    	 System.out.print(" ");
		     }
		}
		System.out.print("\n");
     }
	}
}

提问:你还可以自己给自己增加难度,比如换成变量怎么改 

本次小项目来自B站韩顺平老师的视频,快来跟我一起学习吧!!!

举报

相关推荐

0 条评论