趣味小练习-打印空心三角形

打印空心三角形

需求: 输入行数,打印如下图所示的空心三角形

题目

思路:

把这个图形进行拆解,拆解成几个简单的图形在组合
我的想法是把这个图形拆解成3个部分(见下图)
在这里插入图片描述``
第一部分(红色):第一列星星

第二部分(绿色):第三行开始并且每行依次增加数量的空格部分与最下面一行的星星(不包括首尾两个星星)
第二部分可以拆开为空格部分和底行星星部分

第三部分(蓝色):从二行开始末尾的星星

这三个部分分别对应三个内层循环
代码如下(详细思路在代码块中):

public static void main(String[] args) {
		System.out.println("请输入空心三角形的行数:");
		int line = new Scanner(System.in).nextInt();//从控制台接收行数
		for (int i = 1; i <= line; i++) {//外层循环:控制图形的行数		 
			for (int j = 1; j <=1; j++) {//内层循环1:也就是第一部分:控制第一列都为星星即可
				System.out.print("*");
			}
			for (int j = 3; j <= i; j++) {//内层循环2:第二部分:空白部分+底行星星
				//此时要注意,第二部分是从第三行才开始出现
				//j从3开始,当i=1和2时,循环条件不成立,循环不会开始
				if(i<line) {//不是最后一行时,全部打印空格
					System.out.print(" ");
				}else if(i==line) {//最后一行时才打印星星
					System.out.print("*");
				}
			}
			for (int j = 2; j <= i; j++) {//内层循环3:第三部分
				//此时要注意,第三部分是从第二行才开始出现
				//j从2开始,当i=1时,循环条件不成立,循环不会开始
				if(j==i) {//由图形可知,星星出现的位置和行数i一致,
					//如第二行第二个位置
					//第三行第三个位置
					//所以要判断j是否等于i,等于的时候才打印星星
					System.out.print("*");
				}
			}
			System.out.println();//每次循环后换行
		}
	}

效果如下:
输入5行:
在这里插入图片描述
输入6行:
在这里插入图片描述
以上仅是个人思考,有更简便的方式欢迎相互交流~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值