【Java基础】打印空心的金字塔

打印空心的金字塔 — 化繁为简

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

【代码实现】

public class Stars { 
	public static void main(String[] args) {

/*		1.打印一个矩形
		*****
		*****
		*****
		*****
		*****
*/		for(int i = 1;i <= 5;i++) {  //控制行数
			for(int j = 1;j <= 5;j++) {  //控制列数
				System.out.print("*");
			}
			System.out.println();//换行
		}

/*		2.打印半个金字塔
		*    	//第1层 有 1个*
		**   	//第2层 有 2个*
		***		//第3层 有 3个*
		****    //第4层 有 4个*
		*****   //第5层 有 5个*
*/		for(int i = 1;i <= 5;i++){
			for(int j = 1;j <= i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
		
/*		3. 打印整个金字塔
		*       //第1层 有 1个*   2 * 1 -1   有4=(总层数-1)个空格
	   ***      //第2层 有 3个*   2 * 2 -1   有3=(总层数-2)个空格
	  *****     //第3层 有 5个*   2 * 3 -1   有2=(总层数-3)个空格
	 *******    //第4层 有 7个*   2 * 4 -1   有1=(总层数-4)个空格
	*********   //第5层 有 9个*   2 * 5 -1   有0=(总层数-5)个空格
*/		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.println();
		}

/*		4. 打印空心的金字塔 [最难的]
	    *       //第1层 有 1个*   当前行的第一个位置是*,最后一个位置也是*
	   * *      //第2层 有 2个*   当前行的第一个位置是*,最后一个位置也是*
	  *   *     //第3层 有 2个*   当前行的第一个位置是*,最后一个位置也是*
	 *     *    //第4层 有 2个*   当前行的第一个位置是*,最后一个位置也是*
	*********   //第5层 有 9个*   全部输出*
*/		for(int i = 1; i <= 5; i++) { //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.println("");
		}

		//***************其他情况***************
/* 		*****
 		****
 		***
 		**
 		*
*/		for(int i = 1;i <= 5;i++){
			for(int j = 1;j <= 6-i;j++){
				System.out.print("*");
			}
			System.out.println();
		}

/*		*
 		**
 		***
 		****
 		*****
 		****
 		***
 		**
 		*
*/		for(int i = 1;i <= 5;i++){
			for(int j = 1;j <= i;j++){
				System.out.print("*");
			}
			System.out.println();
		}

		for(int i = 1;i <= 4;i++){
			for(int j = 1;j <= 5-i;j++){
				System.out.print("*");
			}
			System.out.println();
		}
		
	}
}

物竞天择,适者生存,加油吧 !!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值