java空心金字塔

前言

本篇详细讲解如何使用循环打印空心金字塔
如果直接打印空心金字塔的话可能还是不好理解,所以采用化繁为简的方式来一步一步的打印
如果有讲的不好的地方请各位大佬指点指点

打印空心金子塔的方式

打印空心金字塔的话方式很多,最简单的方式就是直接输出,但是如果你的老板叫你在多打印几层,那么就会非常的麻烦,不灵活,使用for 循环的话能灵活的变换打印多少层

金字塔的样式

j金字塔样式

化繁为简

打印菱形

先打印出一个这样的菱形
菱形
分析

1.一行有 5 个 *
2 有 5 层
3 使用for循环打印

public class Starts {
	public static void main(String[] args) {
		int totalLevel = 5; // 层数
		for (int i = 1; i <= totalLevel; i++){
			System.out.println("*****")
		}

	}
}

使用上面的代码我们就可以得到这个菱形
在这里插入图片描述

半个金字塔

** 打印如下的半个金字塔 **
半个金字塔
我们来分析一下

第1层1个 *
第2层2个*
第3层3个*
第4层4个*
第5层5个*
我们直接在菱形代码上修改
使用双重循环

public class Starts {
	public static void main(String[] args) {
		int totalLevel = 5; // 层数
		for (int i = 1; i <= totalLevel; i++){
			for (int j = 1; j < i;j++){
				System.out.print("*"); // 这里不换行
			}
			// 输出完一行 * 后换行
			System.out.println();
		}
	}
}

现在我们已经打印出来半个金字塔了,接下来我们就打印整个金字塔
半个金字塔

整个金字塔

** 打印如下的整个金字塔**
在这里插入图片描述
** 分析 **

第一层一个 *
第二层三个 *
第三层五个 *
第四层七个 *
第五层九个 *
第一层的换我们就可以这样打印
2 * 当前层数 - 1
以此类推…

代码在之前的代码上修改
把第二层循环的 j < i;改为 2 * i - 1即可

public class Starts {
	public static void main(String[] args) {
		int totalLevel = 5; // 层数
		for (int i = 1; i <= totalLevel; i++){
			for (int j = 1; j <= 2 * i - 1;j++){
				System.out.print("*");
			}
			// 输出完一行 * 后换行
			System.out.println();
		}
	}
}

可以看到打印出来了,但是和我们想打印出的金字塔怎么不一样呢?输出的 * 也 是对了,这是因为要在输出 * 之前输出 空格
在这里插入图片描述
我们再来分析一些

第一层有 4 个空格
第二层有 3 个空格
第三层有 2 个空格
第四层有 1 个空格
第五层有 0 个空格
空格输出分析:
第一层的空格 ==》 总层数 - 当前层(1)
第二层的空格 ==》 总层数 - 当前层(2)
以此类推

再来修改一下代码,在输出 * 之前 输出空格

public class Starts {
	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.println();
		}
	}
}

可以看到加了空格输出,就得到了我们想要的金字塔
在这里插入图片描述

空心金字塔

** 现在就是最后一步了,打印一下的空心金字塔 **
在这里插入图片描述
** 分析 **

1.第一层第一个和最后一个是 *,其他为空格
2 第二层第一个和最后一个是 *,其他为空格
3 第三层第一个和最后一个是 *,其他为空格
4 第四层第一个和最后一个是 *,其他为空格
5 第五层全是是 *
6.在输出 * 之前判断是否是第一个位置.最后一个位置和是否是最后 一层

public class Starts {
	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();
		}
	}
}

我们看到这就是我们想要的空心金子塔
在这里插入图片描述

多层金字塔

如果需要打印更多层的空心金字塔,我们只用修改提前定义的变量即可,
例如:打印15层空心金字塔

public class Starts {
	public static void main(String[] args) {
		int totalLevel = 15; // 需要打印的层数
		// 输出层数
		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 == 5) { 
					System.out.print("*"); 
				} else { // 输出空格
					System.out.print(" ");
				}
			}
			// 输出完一行 * 后换行
			System.out.println();
		}
	}
}

现在就很方便啦,只用修改一个变量就可以得到想要的空心金字塔
在这里插入图片描述

总结

这篇文章到此就结尾啦,码文不易,请多多支持!当然!打印的方式不止这样一种,如果还有大佬知道更好的方法请指点指点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值