嵌套循环打印正三角形星星阵●学渣的自我救赎第一期(敬请期待后续)

本文主要是介绍嵌套循环打印正三角形星星阵●学渣的自我救赎第一期(敬请期待后续),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌套循环打印正三角形星星阵●学渣的自我救赎第一期(敬请期待后续)

  • 最开始的想法
    • 为什么会出错呢?
  • 老师是怎么做的?
    • 我得到了些什么?
  • 我的想法真的行不通吗?
    • 我的发现1
    • 我的发现2
    • 我的发现3

目标是获得一堆星星哈哈哈哈哈

最开始的想法

为什么会出错呢?

一开始想的是先把空格存到empty里面去,然后再将empty和星星一起输出,废话不多说贴代码

		//用*打印一个奇数正三角形(最初的错误)for(int i = 0;i < 4;i++) {for(int j = 0;j < 2*i+1;j++) {String empty = null;		//用于计算每一行所需空格for(int k = 0;k < i;k++) {//左边i个,右边i个//再加上中间的*刚好2*i+1个字符empty = (empty == null?"  ":empty + "  ");//根据i的值循环加上空格}System.out.println(empty + "*" + empty);}System.out.println();}

输出结果惨不忍睹
阿这不好意思 冷汗 尴尬我醉了你呢
太糗了,我自己实在是想不出来,只好先看看老师的做法

老师是怎么做的?

简单描述一下老师的思路:
1.数清楚每一行的空格和星星
2.开两个平行的内层循环先打空格再打星星(注意要去掉换行)
3.完成

我得到了些什么?

等下,**先把空格打出来!**我怎么没想到呢不好意思 冷汗 尴尬,我试试吧

		//用*打印一个奇数正三角形for(int i = 0;i < 4;i++) {			//行→0,1,2,3for(int k = 0;k < 3-i;k++) {	//列→3,2,1,0(空格数量)
//			for(int k = i+1;k < 4;k++) {	//老师的思路:i越大,k越小//1.先打空格(易发现i+k=3,所以k=3-i个空格)System.out.print(" ");}for(int j = 0;j < 2*i+1;j++) {//列→1,3,5,7(*的数量)//2.再打*System.out.print("*");}System.out.println();}

贴图贴图!!!终于打出来了
能打出来我是很开心的,但是又有些郁闷:为什么我的想法不行呢?我觉得没问题呀
于是我又转头研究之前那个乱七八糟的代码了

我的想法真的行不通吗?

带着这个问题,我好好地审视了自己的代码,倒真让我发现了几个问题:

我的发现1

每一行的空格数量都不一定,去发现它与行数的关系固然是最便捷的方式,谁让我一开始没想到呢笑哭 哭笑 笑出眼泪 破涕为笑 笑死 笑尿 笑cry
我一开始想到的是:无论每一行怎么变,有一个地方永远不会动,那就是中轴线(第四个字符的位置永远是星星),那我从中轴线开始数不就行了?
抱着这样的想法我发现了从中轴线往左数的空格是有规律的:i越大,空格越少,而且无论怎样**“i+空格”的数目永远是4**(也就是中轴线的位置),那空格的数目不就是4-i嘛!
话不多说代码敲起来!

		//用*打印一个奇数正三角形(我的想法调试版)for(int i = 0;i < 4;i++) {for(int j = 0;j < 2*i+1;j++) {String empty = null;		//用于计算每一行所需空格for(int k = 0;k < 4-i;k++) {//左边i个,右边i个//再加上中间的星星刚好2*i+1个字符(错误错误!!!)//光是星星就2*i+1了,加上空格就更不止了!!!//所以应该是.....我乱了~暴风哭泣//先试试4-i吧empty = (empty == null?" ":empty + " ");//根据i的值循环加上空格}System.out.print(empty + "*" + empty);}System.out.println();}

贴图贴图!!!
调试中......
有点头绪了,再看看哪里需要改进呢?

我的发现2

在和老师的讨论中我发现了,前面都是对的,就是后面的空格有点多,仔细想想是因为它

System.out.print(empty + "*" + empty);	//多余的empty

为了追求与图形一致的对称感,**我盲目地在后面也加入了空格,导致了每个星星的后面都有空格,间隙可不就变大了嘛!**于是我改了一下

System.out.print(empty + "*");			//删去了后面的empty

疯狂贴图!!!
继续调试
em…好像好了点,但还是有问题

我的发现3

每个星星的前面也有空格不好意思 冷汗 尴尬事实上只需要第一个星星的前面挨着empty就行了
那咋办呢(摊手)继续造呗~

//用*打印一个奇数正三角形(我的想法完成版)for(int i = 0;i < 4;i++) {int virgin = 1;				//判断是否为第一次进入内层循环for(int j = 0;j < 2*i+1;j++) {//int virgin = 1;//不能定义在这里,否则每一次进入都初始化为1,无法判断是否第一次String empty = null;		//用于计算每一行所需空格for(int k = 0;k < 4-i;k++) {//左边i个,右边i个//再加上中间的星星刚好2*i+1个字符(错误错误!!!)//光是星星就2*i+1了,加上空格就不止了!!!//所以应该是.....我乱了~暴风哭泣empty = (empty == null?" ":empty + " ");//根据i的值循环加上空格}if(virgin == 1) {//请不要去百度virgin的意思谢谢(手动围笑)System.out.print(empty + "*");//如果是第一次,就接emptyvirgin = 0;}else {System.out.print("*");//如果不是第一次,就只打星星就好了}}System.out.println();}

把图给我贴上来!!!
金星老师同款完美,嘻嘻
搞定了,可把我累死了,费这么大力气打出来的代码还不如老师那几行简短有力…我哭了~你呢

这篇关于嵌套循环打印正三角形星星阵●学渣的自我救赎第一期(敬请期待后续)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493080

相关文章

BT天堂网站挂马事件后续:“大灰狼”远控木马分析及幕后真凶调查

9月初安全团队披露bt天堂网站挂马事件,该网站被利用IE神洞CVE-2014-6332挂马,如果用户没有打补丁或开启安全软件防护,电脑会自动下载执行大灰狼远控木马程序。 鉴于bt天堂电影下载网站访问量巨大,此次挂马事件受害者甚众,安全团队专门针对该木马进行严密监控,并对其幕后真凶进行了深入调查。 一、“大灰狼”的伪装 以下是10月30日一天内大灰狼远控的木马样本截图,可以看到该木马变种数量不

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log

fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在 var str: TMemoryStream; begin    begin      str:= TMemoryStream.Create;      CurrRichRecord.richedit.Lines.SaveToStream(str);      str.Posit

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)「首先来看看目前已有的资料,还会不断更新哦~一次购买,后续不会再被收费哦,保证是全网最全资源,随着后续内容更新,价格会上涨,越早购买,价格越低,让大家再也不需要到处买断片资料啦~💰💸👋」�

Java项目中,配置打印 JDBC 日志的几种方法

在 IDEA 项目中,如果你想打印 JDBC 日志,可以通过配置日志框架(如 Logback 或 Log4j)来实现。Spring Boot 使用的默认日志框架是 Logback,你可以通过在 application.yml 文件中配置日志级别来打印 JDBC 日志。 方法 1: 使用 application.yml 配置 JDBC 日志 logging:level:# 显示 SQL 语句co

自我提升社团成立啦,欢迎各位同学加入~

欢迎加入 大家好,我是马丁,我们的自我提升社团成立啦,欢迎有新的朋友加入!! 我们的社团主要目标是帮助每个人实现自我成长、自我提升,不论他是什么年龄、什么经验、什么专业,只要有一个好学和想进步的心,都可以加入。 为了提升帮助每个人实现自我成长,目前社团选择的是做一个智能客服系统,我们希望通过搭建一个企业级的智能客服系统来帮助每个人实现自我成长。后续,还会开发更多系统~ 目前群里大多是Jav

自我反省(一)

上个学期队友陈彤问我想和他一起做项目不,我想有项目当然答应了下来,这个项目是和信管院一起做的——哈尔滨日租房开发软件。我和陈彤负责技术,他们学院的人负责销售,一开始我们都信心满满,但是我和陈彤现在除了c/c++其它什么都不会,逼着自己学安卓开发,项目中间陈彤把浩然大神也加进来了,有他在我们都觉得这个项目一定可以完成。但是我们把事情想简单了,或许浩然大神做软件没问题,但由于我和陈彤是小白,什么都

一个C++程序运行,从点击运行到控制台打印文本,电脑硬件的资源是如何调动的

当点击运行一个 C++ 程序并看到控制台输出文本时,计算机硬件和操作系统之间协同工作,完成了多个步骤。这些步骤涉及 CPU、内存、存储设备、操作系统和输入输出设备的共同作用。下面是一个详细的过程描述: 1. 程序加载 启动:当你点击运行一个可执行文件时,操作系统(通常是 Windows、Linux 或 macOS)的文件系统管理器识别请求,并启动加载程序。读取可执行文件:加载程序将可执行文件从

kali linux的安装以及后续操作

目的: 想学下网络安全等方面的知识 所以安装了kali linux 因为里面集成了 很多有用的工具 非常方便 1、应为想要安装VMware里面的虚拟机 所以找一个虚拟镜像就行 下载url: https://www.kali.org/downloads/  这里面可以找到你想要的 我直接下了最新版的 2、下载完了需要验证下iso是不是正确的 shasum kali-linux_XXX