Java第二十五篇:打印实心菱形、空心菱形以及金字塔三角形

正在看这篇文章的你,肯定是个爱学习的人儿!奥利给!

最近有同学看了我写的Java第十三篇博文:打印九九乘法表,产生了这样的疑惑:
根据这篇文章,我可以打印实心菱形和空心菱形吗?
答案:肯定能实现,我们一起来看看叭。

1.打印实心菱形

package study;

/**
 * 
 * @author 重工黑大帅
 * @date 2020.2.5
 * @see everyone
 * 实现功能:打印实心菱形
 *
 */
public class Study{
	public static void main(String args[ ]) {      
		int i,j,k;  //实例变量可以不赋初值,我建议还是赋初值,养成好习惯,变量i代表代表图形的行数,变量j代表图形的个数,变量k用来控制空格数
		String ch="*"; //定义图形形状
		System.out.println();  //控制台打印图形间隔一行
		//实心菱形上半部分
		for(i=1;i<=4;i++){	 //	控制图形行数
			for(k=1;k<=4-i;k++) {   //控制空格数
				System.out.print(" ");
			}
			for(j=1;j<=i;j++){   //控制"*"个数
		        System.out.print(ch+" ");
			}
			System.out.println();  //换行
		}
		
		//实心菱形下半部分//	
		for(i=1;i<=3;i++){		   //控制图形行数
			for(k=1;k<=i;k++) {      //	控制空格数
				System.out.print(" ");
			}
			for(j=1;j<=4-i;j++){
		      System.out.print(ch+" ");//控制"*"个数
			}
			System.out.println();   //换行
		}
	}
}

结果显示:
在这里插入图片描述
过程分析:
打印这类图形,我们首先就要想到用嵌套for循环来实现,这类图形的打印也是很多比赛和面试喜欢拿来用的,大家平时多积累,多练习,欢迎留言交流,共同进步。其次,常规套路,三个变量:行数,列数,图形个数(i,j,k),虽然看着没几行代码,但要去实现还是需要经过思考,最好的办法就是多敲多练习。

2.打印空心菱形

说到空心菱形,就是把上述结果中图形的中心变成空白,如下图:
在这里插入图片描述
相对于上述打印实心菱形来说,打印空心菱形稍微有一点高度的提升,但只要你想通了,注重细节,我相信你也可以快速掌握的,话不多说,上菜:

//打印空心菱形
public class Study{
	public static void main(String args[ ]) {      
		int i,j,k; //实例变量可以不赋初值,我建议还是赋初值,养成好习惯,变量i代表代表图形的行数,变量j代表图形的个数,变量k用来控制空格数
		String ch="*";  //定义图形形状
		//打印上半部分图形
		for(i=1;i<=4;i++){	  //	确定行数
			for(k=1;k<=4-i;k++) {   //控制空格数
				System.out.print(" ");
			}
			for(j=1;j<=i;j++){    // 控制"*"数量
				if(j==3||j==4) {
					continue;
				}
		        System.out.print(ch+" ");
		        if(i==3) {
					System.out.print("  ");
				}
		        if(i==4) {
		        	System.out.print("    ");
		        }
			}
			System.out.println();
		}
		for(i=1;i<=3;i++){		
			for(k=1;k<=i;k++) {
				System.out.print(" ");
			}
			for(j=1;j<=4-i;j++){
				
				//这儿是核心
				if(j==2 && i==1) {
					System.out.print("  "+ch);
					break;
				}
				
				System.out.print(ch+" ");
			}
			System.out.println();
		}
	}
}

结果显示:
在这里插入图片描述
过程分析:
在我打印空心菱形之前,我也模仿自己在不清楚的情况下,打印出的图形是这样的:(以下图形是错误的,仅供学习参考)
在这里插入图片描述
图1

在这里插入图片描述
图2
在这里插入图片描述
图3
上述三种图形都是错误的,在分析倒着打印三角形的时候,我发现变量j的值都是从1开始的,那每次都会执行到j=2,这就有点难受:我如果对j=2这一步进行操作,第二行没问题,但第三行打印出来的图形就会错位,如下图:
在这里插入图片描述
我如果调整第三行,那第二行的图形也会受到影响,那怎么办呢?这个时候我就行到了变量i,我来改变i的值,看看会不会得到我想要的图形,但结果还是没得到我想要的图形,如下图(调整变量i得到的图形):在这里插入图片描述
我沉思了一会,仔细观察了一下程序,变量i和变量j都会经过j=2这个环节,但是变量i的值却不一样,一个是i=1,一个是i=2,那这个时候逻辑与就上场了(等了这么久,终于轮到我上场了!),所以这个时候就可以区别了,问题得到解决,开心叭!

3.打印金字塔三角形

public class Study{
	public static void main(String args[ ]) {      
		int i,j,k;  //实例变量可以不赋初值,我建议还是赋初值,养成好习惯,变量i代表代表图形的行数,变量j代表图形的个数,变量k用来控制空格数
		String ch="*"; //定义图形形状
		System.out.println();  //控制台打印图形间隔一行
		//实心菱形上半部分
		for(i=1;i<=10;i++){	 //	控制图形行数
			for(k=1;k<=10-i;k++) {   //控制空格数
				System.out.print(" ");
			}
			for(j=1;j<=i;j++){   //控制"*"个数
		        System.out.print(ch+" ");
			}
			System.out.println();  //换行
		}
	}
}

结果显示:
在这里插入图片描述
拓展题:
在这里插入图片描述
这是留给读者的练习题,看过这篇博客的同学尽量练习,加深印象,不要只会纸上谈兵哈,答案若有需要我会发在留言中。

有疑问欢迎留言!

点个赞,加个关注呗!嘿嘿!

发布了45 篇原创文章 · 获赞 195 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/H_W_1212/article/details/104184762