文章目录

  • 前言
  • 打印空心金子塔的方式
  • 金字塔的样式
  • 化繁为简
  • 打印菱形
  • 半个金字塔
  • 整个金字塔
  • 空心金字塔
  • 多层金字塔
  • 总结


前言

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

打印空心金子塔的方式

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

金字塔的样式

for循环打印金字塔图形java原理 java用for循环打印金字塔_开发语言

化繁为简

打印菱形

先打印出一个这样的菱形

for循环打印金字塔图形java原理 java用for循环打印金字塔_System_02


分析

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("*****")
		}

	}
}

使用上面的代码我们就可以得到这个菱形

for循环打印金字塔图形java原理 java用for循环打印金字塔_java_03

半个金字塔

** 打印如下的半个金字塔 **

for循环打印金字塔图形java原理 java用for循环打印金字塔_System_04


我们来分析一下

第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();
		}
	}
}

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

for循环打印金字塔图形java原理 java用for循环打印金字塔_System_05

整个金字塔

** 打印如下的整个金字塔**

for循环打印金字塔图形java原理 java用for循环打印金字塔_java_06


** 分析 **

第一层一个 *
第二层三个 *
第三层五个 *
第四层七个 *
第五层九个 *
第一层的换我们就可以这样打印
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();
		}
	}
}

可以看到打印出来了,但是和我们想打印出的金字塔怎么不一样呢?输出的 * 也 是对了,这是因为要在输出 * 之前输出 空格

for循环打印金字塔图形java原理 java用for循环打印金字塔_for循环打印金字塔图形java原理_07


我们再来分析一些

第一层有 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();
		}
	}
}

可以看到加了空格输出,就得到了我们想要的金字塔

for循环打印金字塔图形java原理 java用for循环打印金字塔_System_08

空心金字塔

** 现在就是最后一步了,打印一下的空心金字塔 **

for循环打印金字塔图形java原理 java用for循环打印金字塔_System_09


** 分析 **

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();
		}
	}
}

我们看到这就是我们想要的空心金子塔

for循环打印金字塔图形java原理 java用for循环打印金字塔_System_10

多层金字塔

如果需要打印更多层的空心金字塔,我们只用修改提前定义的变量即可,
例如:打印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();
		}
	}
}

现在就很方便啦,只用修改一个变量就可以得到想要的空心金字塔

for循环打印金字塔图形java原理 java用for循环打印金字塔_for循环打印金字塔图形java原理_11

总结

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