//我是一个电脑小白,学习Java的萌新,在编程的路上,和大家分享自己的解题心得,希望大家共同进步!文章有不正之处还望大佬指正!抱拳了,老铁!
//本题目出自Java语言程序设计第十版(机械工业出版社)第五章第十七题

一、原题目以及参考代码:

编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案,如下面的运行示例所示:

二、编程解析:

这一道题是我们在学习循环时遇到的经典题目——输出“*”形金字塔的变形,其思路也是一样,只不过本题是需要输出数字而已,需要多设计一个循环。
本题需要每一行每一行来找规律,也就是空格(输出中左边空白其实都是空格),每行数字以及与行数的关系,如此来看这个表格应该是:

我们不如设用户输入的一个数字为num,每行空格数为space,每行行数为line,每行数字“1”左边数字数(包括“1”)为starL,每行数字“1”右边数字数(不包括“1”)为starR。(为什么需要分左右下文将讲解)则每行有此规律:
starL = line ;
starR = line – 1 ;(从第二行起)
space = num – line ;
那么要解此道题,我们应该想到,每行的组成应该是【空格+行数递减+行数递增(第一行除外)】。例如第一行的空格,我们需要创建一个输出一个空格的语句,而让它重复输出(num – line = )3次就行,而第二行我们就减掉1就行;递减数字我们直接输出行数递减到1就行,递增数字我们直接赋初始值为2,最大值设定为行数就行。所以此题用for循环最好不过。

三、编程语句解析:

★为什么设置左右变量?
因为一个循环它只能按照规律进行递减或者递增,所以我们需要设置两个变量。
★如何来设置循环?
需要用到三次for循环,两个并列for循环嵌套一个for循环

for(line = 1 ;line  <  num; line++){
//设置初始行数为1,并且设置为递增
for(space = num - line; space >= 0 ; space--){System.out.printf(" ");
//初始化每行的空格数,并且设置循环让其输出三次
}
for (starL = line; starL >= 1; starL--) {System.out.printf( "%d",starL);
//初始化左边数字递减循环,最小值为1;
}
for (starR = 2;starR <= line ;starR++) {System.out.printf("%d",starR);
//初始化右边数字为2,设置它小于行数,所以输出第1行的时候此循环无效
}
System.out.printf("\n");
//此语句隶属于第一个for循环,其作用就是输出完每行数据之后换行
}

至此,主要程序思路完毕。
【后记:请体会为什么循环内输出语句是“…….printf()”,而不是“…….println()”,因为此语句输出后光标停留在本行利于其他循环继续输出。】

超简单解析显示金字塔(Display pyramid)题目相关推荐

  1. 超分辨率图像重建-拉普拉斯金字塔(laplacian pyramid)

    <Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution>笔记,有什么理解错误的地方,欢迎大家指正. ...

  2. 第五章第十七题(显示金字塔)(Display pyramid)

    **5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案,如下面的运行示例所示: Enter the number of lines: 7         ...

  3. 超简单仿QQ步数显示控件

    本着写文即学习的态度,记录下自定义一款超简单仿QQ步数加载控件,话不多数先看图. 一,特性: 1,外圈大圆.进度圆和数字显示的颜色均可以自定义 2,设置最大值和当前值 3,设置加载持续时间 二,实现: ...

  4. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  5. 超简单JS实现把鼠标选中文字发送到新浪微博

    最近注意到新浪博客有个小功能,就是当鼠标选中一段文字时会浮现一个小图片,点击这个图片可以把选中内容发送到新浪微博,一时兴起昨晚就写了一个Demo玩了一下,代码超简单,没优化,有兴趣的朋友可以自己改进. ...

  6. 【RuoYi框架】RuoYi框架学习超简单案例 - 新闻管理系统(附源码)

    文章目录 前言 一.需求 二.数据库设计 1.新闻菜单表(树表) 1.新闻内容表 三.运行RuoYi项目 1.创建数据库,运行sql文件 2.启动运行RuoYi项目 四.生成代码 1.添加字典(菜单显 ...

  7. 纯CSS时间轴实现的办法,超简单的!

    转自:http://oss.so/blog/21.html 在以往,如果要在网页上,实现时间轴效果,我们需要使用jQuery来实现.虽然jQuery十分的漂亮美观,但使用方法来说,太麻烦了.而我们现在 ...

  8. java最美验证码_java超简单,超级实用验证码

    java超简单,超级实用验证码 1.   验证码(2) dsnaValidateCode.jar dsnaValidateCode_src.rar ValidateCode.java 验证码生成类 J ...

  9. HTML- 超美超简单的相册

    HTML-> 超美超简单的相册 实现内容: ​ 1.四张小图每次鼠标点击时大相册显示被点击的小图并且其它图片变灰色.(你也可以设置更多张相片). ​ 2.默认状态下展示第一张相片: 实现代码: ...

最新文章

  1. java老师拿钥匙,从Java中的NavigableMap获取第一把钥匙
  2. img下面的png图片 vs 读不出来_VUX中XImg组件加载图片不正确,BusPlugin不好使,求解...
  3. 【Apache 】 遇到的问题
  4. python作业案例_作业解析-python bayesian案例
  5. Bootstrap HTML编码规范之引入 CSS 和 JavaScript 文件
  6. 【深入浅出etcd系列】2. 心跳和选举
  7. k8s 集群全部更换机器 IP
  8. 编辑状态打开mysql表,Mysql 数据库 基本操作以及调用(一)
  9. 初中女生数学不好能学计算机,初中女生必看:学好数学的方法及窍门
  10. Sui改进提案(SIPs)及其审核流程
  11. 60种提升自身能量的方法
  12. 水的黏度 Viscosity of Water
  13. Python3安装xlrd
  14. 【数字逻辑与数字系统设计】应对期末考(更新于2022/4/15)
  15. [转贴精华]《新概念》英语学习方法完全手册-学新概念英语必读
  16. python输入生日输出星座_python字典保存星座性格特点并输出
  17. 文献--Bacterial coexistence driven by motility and spatial competition-模型代码
  18. 云原生可观察性之日志管理
  19. 可调电位器/滑动变阻器拆解
  20. 1562_AURIX_TC275_电源监控

热门文章

  1. 世界顶级黑客Kevin D.Mitnick教你如何在数字世界中真正隐形?
  2. 批处理修改注册表调整输入法
  3. java的splititeration,Java Spliterator.estimateSize方法代碼示例
  4. 100道Java高频面试题(阿里面试官整理)
  5. Camera | 2.MIPI、CSI基础
  6. [flex]flex-direction: column;
  7. 【转】DRY原则的误区
  8. RC低通滤波原理(笔记)
  9. 判断是否符合 USD 格式
  10. Cmake语句find_package()函数