打印三角形、菱形、空心菱形

三角形、菱形、空心菱形打印玄学规律

方法来源B站UP主放慵且行衣

一、直角三角形

在这里插入图片描述
图一

如图所示,设其总行数为n,即n=3
设其对应的行数、列数为i、j
即:第一行有1个“”,表示为i=1,j=1;
第二行有2个“**”,表示为i=2,j=2;
第三行有3个“
***”,表示为i=3,j=3。 如下图所示:
在这里插入图片描述
所以综上所述i、j之间的规律为i=j,所以用for循环嵌套,实现代码如下:

for(int i=1;i<=3;i++){
			for(int j=1;j<=i;j++){
				System.out.print("*");
			}
			System.out.println();
		}

划重点:j<=i
在这里插入图片描述

二、倒直角三角形

在这里插入图片描述
图二

如图所示,设其总行数为n,即n=3
设其对应的行数、列数为i、j
即:第一行有3个“***”,表示为i=1,j=3;
第二行有2个“**”,表示为i=2,j=2;
第三行有3个“
”,表示为i=3,j=1。 如下图所示:
在这里插入图片描述
所以综上所述i、j之间的规律为j=n-i+1,又∵ n=3,∴ j=3-i+1
所以用for循环嵌套,实现代码如下:

for(int i=1;i<=3;i++){
			for(int j=1;j<=3-i+1;j++){
				System.out.print("*");
			}
			System.out.println();
		}

划重点:j<=3-i+1
在这里插入图片描述

三、等腰三角形

在这里插入图片描述
图三

如图所示,设三角形的总行数为n,即n=3;
设其对应的行、列分别为i、j
即:第一行有1个※,表示为i=1,j=1;
第二行有3个※,表示为i=2,j=3;
第三行有5个※,表示为i=3,j=5。 如图所示:
在这里插入图片描述
综上所述,寻找i和j的关系,可以表示为:j=2*i-1
而该图形前面带有空格,前面的空格可视为一个倒三角形(参照图二)结合而成。
所以用for循环嵌套,代码实现如下:

for(int i=1;i<=3;i++){
			for(int k=1;k<3-i+1;k++){
				System.out.print(" ");
			}			
			for(int j=1;j<=2*i-1;j++){
				System.out.print("*");
			}
			System.out.println();
		}

划重点:j<=2*i-1
在这里插入图片描述

四、倒等腰三角形

在这里插入图片描述
图四

如图所示,设三角形的总行数为n,即n=3;
设其对应的行、列分别为i、j
即:第一行有5个※,表示为i=1,j=5;
第二行有3个※,表示为i=2,j=3;
第三行有1个※,表示为i=3,j=1。 如图所示:
在这里插入图片描述
综上所述,寻找i和j的关系,可以表示为:j=(n-i)*2+1,又n=3,所以j=(3-i)*2+1
而该图形前面带有空格,前面的空格可视为一个倒三角形(参照图二)结合而成。
所以用for循环嵌套,代码实现如下:

for(int i=1;i<=3;i++){
			for(int k=2;k<=i;k++){
				System.out.print(" ");
			}
			for(int j=1;j<=(3-i)*2+1;j++){
				System.out.print("*");
			}
			System.out.println();
		}

划重点:j<=(3-i)2+1
在这里插入图片描述

五、菱形

在这里插入图片描述
图五

菱形可由图三和图四拼接组成,所以打印出图五就是将图三和图四的实现代码结合在一起,修改一个数据即可,具体实现代码如下:

		for(int i=1;i<=3;i++){
			for(int k=1;k<3-i+1;k++){
				System.out.print(" ");
			}			
			for(int j=1;j<=2*i-1;j++){
				System.out.print("*");
			}
			System.out.println();
		}
		for(int i=1;i<=2;i++){
			for(int k=1;k<=i;k++){
				System.out.print(" ");
			}
			for(int j=1;j<=(2-i)*2+1;j++){
				System.out.print("*");
			}
			System.out.println();
		}

六、空心菱形

在这里插入图片描述
空心菱形是在实心菱形的基础上修改而成的,从图形上看,空心菱形每一行的第一列和最后一列是*,其他的都是空格,所以在实心菱形代码的打印*的for循环中,添加一个if判断, 实现代码如下:

for(int i=1;i<=3;i++){
			for(int k=1;k<3-i+1;k++){
				System.out.print(" ");
			}			
			for(int j=1;j<=2*i-1;j++){
				if(j==1 || j==2*i-1){	//仅在开头和末尾打印*
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
				
			}
			System.out.println();
		}
		for(int i=1;i<=2;i++){
			for(int k=1;k<=i;k++){
				System.out.print(" ");
			}
			for(int j=1;j<=(2-i)*2+1;j++){
				if(j==1 || j==(2-i)*2+1){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值