【发布时间】:2020-02-11 17:29:53
【问题描述】:
根据用户输入的行数,如何使用循环程序构建金字塔?比如
*
***
*****
*******
我尝试观看几个视频并阅读有关此逻辑的文章,但讲师要么无法理解,要么跳过了推理。
我知道每行增加 2 颗星,而且我知道因为每行都有奇数颗星,我可以将一行中的星数定义为 2n+1,其中 n 是整数。我注意到一个 2 行三角形的底数为 3 颗星,一个 3 行三角形的底数为 5 颗星,依此类推。因此,对于第 n 行,三角形底数为 n+(n-1),即 2n-1。例如,r_5:base = 9 颗星。我知道我的程序需要考虑的下一件事是间距。我注意到,从底部开始,间距每行增加 2,直到前半部分有 n-1 个空格,后半部分有 n-1 个空格,换句话说,间距从底部开始增加,直到大于或等于 2b-2。
我认为涵盖 Java 程序需要知道的所有要点:每行的星数、基数的大小和间距。 但是我如何用 for while 循环来翻译这一切呢?
【问题讨论】:
-
想清楚这一点:for 循环将允许循环体执行 X 次,其中 X 是一个有限且已知的数字。想想在你的金字塔中什么是已知的和有限的数字?您的程序在开始工作之前需要询问用户的一件事是什么?
-
就像对 OP 的说明一样,您将需要多个循环。请记住,当您知道有多少次迭代时使用 for 循环,而当迭代次数不确定时使用 while 循环。鉴于这些点点滴滴的知识和你以前对代数的理解,按照 Stephen C 所说的去做,试一试。忽略发布的解决方案——有些事情告诉我,你已经知道你会从为答案的挣扎中得到更多。
-
我自己尝试过编码,但通常我只会得到奇怪的对角星或一列星。自己尝试确实在一定程度上有所帮助,例如,它让我意识到需要多个循环。我很高兴我在这里收到了很多回复,我今天晚些时候醒来时会再试一次
标签: java loops for-loop while-loop shapes