文章目录
- 前言
- 打印空心金子塔的方式
- 金字塔的样式
- 化繁为简
- 打印菱形
- 半个金字塔
- 整个金字塔
- 空心金字塔
- 多层金字塔
- 总结
前言
本篇详细讲解如何使用循环打印空心金字塔
如果直接打印空心金字塔的话可能还是不好理解,所以采用化繁为简的方式来一步一步的打印
如果有讲的不好的地方请各位大佬指点指点
打印空心金子塔的方式
打印空心金字塔的话方式很多,最简单的方式就是直接输出,但是如果你的老板叫你在多打印几层,那么就会非常的麻烦,不灵活,使用for 循环的话能灵活的变换打印多少层
金字塔的样式
化繁为简
打印菱形
先打印出一个这样的菱形
分析
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();
}
}
}
现在就很方便啦,只用修改一个变量就可以得到想要的空心金字塔
总结
这篇文章到此就结尾啦,码文不易,请多多支持!当然!打印的方式不止这样一种,如果还有大佬知道更好的方法请指点指点