首页 > 编程知识 正文

java嵌套循环,java用for循环打印菱形

时间:2023-05-06 19:52:41 阅读:34628 作者:4602

我以前也见过其他大人物的问题,大部分都分为两个大的for循环分别印刷菱形的上部和下部。 如果不把上下两个部分分开,我们这个循环该怎么写?

num int型、菱形的总行数

helf int类型是菱形行数的一半,即num/2

这里写的代码可以看到我使用了三个for循环:

最外面的for循环打印菱形行数。

包在里面的第一个for循环负责打印空间,也就是编辑格式。

第二,印刷菱形。

实现菱形打印的关键在于这中间两个for循环的判断部分。

现在,让我们举一个例子来分析一下这两个判断部分是怎么想的:

假设菱形行数num为7

下图的空间请用-代替

菱形空间数星号数

---* 0 3 1

--*** 1 2 3

-***** 2 1 5

******* 3 0 7

-***** 4 1 5

--*** 5 2 3

---* 6 3 1

总行数7的行数的一半为3(7/2==3) )。

上面的数据显示

我们先考虑空格如何打印。

如果查看上半部分、第0行至第3行,则可以看到行数的一半减去当前行数,正好等于上半部分的空格数

3-0=3,3-1=2,3-2=1,3-3=0

因此,表达式helf - i=得到上半部分的空格数。

同样,将这个公式带入下半部分第4行至第6行的结果是

3-4=-1、3-5=-2、3-6=-3

而且我们需要的结果是

3-4=(1)、3-5=(2)2)、3-6=(3)3) )。

设定绝对值就可以了吗?

因此,我们对第一个循环的判断条件是,你的循环次数小于你的总行数的一半,减去当前行数后的值取其绝对值,就是我们需要打印的当前行数的空间数。

那*号如何打印呢?

同样,在考虑空格打印时,首先打印星号的上半部分,即从第0行至第3行,分别打印1、3、5和7个星号。 在现阶段还什么也看不见。 想想别的排列方法吧。

0==’1,1==’3,2==’5,3==’7

行数的一半是3,我们的循环从0开始。 我们的上半部分不能写这样的公式

行*2,即

for(intj=0; ji*2; j )那么,基于这一观点,要研究下半部分,需要进行以下操作

4==’2=’5,5==’1=’3,6==’0=’1

按照这个流程,我们可以直接给出6-你下半部分的行数,得到2 1 0。 但是,我们上半部分的公式是行数*2,似乎和我们下半部分不太相符。

以我们普通的行数,也就是说我们的helf能否代入我们的公式,在这里我也卡住了很久。 怎么也找不到主意,一直在挖6-行数的路子,所以试着带进了helf。 做不到,毕竟,helf表示的数字是我们行数的一半,是我们中最长的行数,是一个承办方的左右。

它似乎在行数%helf的上半部分(除了中间的第三行)没有任何问题,但同样是我的空间。 但是,到了下半场就得到1、2、0。 那个好像和我们的2 1 0有点像,怎么转换?

让我们看看前两个数字1、2和1。 他们的和正好是helf,是我们的3

那么,我们能通过在行数%helf上加3或减3,取绝对值来得到我们的1和2吗? 初步做了一下得到了公式

math.ABS(I%helf-helf )到此为止,行数为4,5没有问题,但1 )2) 6为止,让我们总结一下发生了各种各样的问题

所以,这个-helf是我们不能随便添加的。 你怎么控制那个? i/helf,我们加入i/helf后,我们的数据

1、2、3、4、5时没有大问题,但到了6时会发生多个星号问题。 这是因为当我们的I为6时,i/helf==2,最后我们取的绝对值为12,最后打印13个星号。 所以我们必须

将%2添加到i/helf以限制此6。 最后得到公式

math.ABS(I%helf-helf ) (I/helf ) ) )到此为止,我们通过在三个for循环中打印菱形结束了谈话。 我没有经验第一次做这个。 大佬,和我一样的小萌给我新评论,有什么有趣的代码就分享研究吧((^^ ) )接下来遇到什么有趣的代码的时候也发博客给大家分享。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。