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

//我是一个电脑小白,学习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()”,因为此语句输出后光标停留在本行利于其他循环继续输出。】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值