打印空心金字塔

如何打印出空心金字塔?

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

化繁为简

  1. 打印出一个矩形
  *****
  *****
  *****
  *****
  *****
for(int i = 1; i <= 5; i++) {
			System.out.println("*****");
		}
  1. 打印出金字塔
      *			//第1层2*当前层数-1个*,总层数-当前层数个空格
     ***		//第2层2*当前层数-1个*,总层数-当前层数个空格
    *****		//第3层2*当前层数-1个*,总层数-当前层数个空格
   *******		//第4层2*当前层数-1个*,总层数-当前层数个空格
  *********		//第5层2*当前层数-1个*,总层数-当前层数个空格
for(int i = 1; i <= 5; i++) {//i表层数
			for(int k = 1; k <= 5 - i; k++) {//k表空格数
				System.out.print(" ");
			}
			for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
				System.out.print("*");
			}
			System.out.println("");
		}
  1. 打印出空心金字塔
      *			//第1层在2*当前层数-1个位置中第一个位置和最后一个位置为*其他为空格,总层数-当前层数个空格
     * *		//第2层在2*当前层数-1个位置中第一个位置和最后一 个位置为*其他为空格,总层数-当前层数个空格
    *   *		//第3层在2*当前层数-1个位置中第一个位置和最后一个位置为*其他为空格,总层数-当前层数个空格
   *     *		//第4层在2*当前层数-1个位置中第一个位置和最后一个位置为*其他为空格,总层数-当前层数个空格
  *********		//第5层在2*当前层数-1个位置中全部为*,总层数-当前层数个空格
for(int i = 1; i <= 5; i++) {//i表层数
			for(int k = 1; k <= 5 - i; k++) {//k表空格数
				System.out.print(" ");
			}
			for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
				if(j == 1 || j == i * 2 - 1 || i == 5) {
					System.out.print("*");
				} else {
					System.out.print(" ");	
				}
			}
			System.out.println("");
		}

先死后活

  • 把常量用变量替代来方便需求的变化,提高方法的变通
  • 可以用int totalLevel = 5;表示总层数;如果想要更大的空心金字塔只需要修改 totalLevel 变量的值就可以实现

如打印这样的一个金字塔
在这里插入图片描述
只需要将 totalLevel 修改为相应层数就行了

int totalLevel = 15;
		for(int i = 1; i <= totalLevel; i++) {//i表层数
			for(int k = 1; k <= totalLevel - i; k++) {//k表空格数
				System.out.print(" ");
			}
			for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
				if(j == 1 || j == i * 2 - 1 || i == totalLevel) {
					System.out.print("*");
				} else {
					System.out.print(" ");	
				}
			}
			System.out.println("");
		}

总代码:

public class Star {
	//编写方法
	public static void main(String[] args) {
		/*
		打印出空心金字塔
		    *
		   * *
		  *   *
		 *     *
		*********
		*/
		int totalLevel = 5;//表示总层数
		for(int i = 1; i <= totalLevel; i++) {//i表层数
			for(int k = 1; k <= totalLevel - i; k++) {//k表空格数
				System.out.print(" ");
			}
			for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
				if(j == 1 || j == i * 2 - 1 || i == totalLevel) {
					System.out.print("*");
				} else {
					System.out.print(" ");	
				}
			}
			System.out.println("");
		}


	}
}

注意:公共类文件名要和类名一致,这里文件应该命名为 Star.java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值