00:00
大家好,我是海波老师,Java的流程控制啊,我们已经讲完了,那么这里呢,包含了我们的顺序执行,分支执行啊,以及我们的重复执行,接下来我们来给大家做一个小练习啊,咱们这里拷贝。我们这里写上一个零六,然后呢,写上一个test啊,把它写上test,点击OK,点击OK以后呢,把这些东西啊,咱们全都给它去掉啊,咱们写上它,咱们叫小练习啊,那这个小练习咱们做什么呢?给大家做这么一个东西,咱们叫九层妖塔。哎,老师啊,什么叫九层妖塔,怎么还扯上九层妖塔了呢?哎,这里给大家说一下我们所谓的九层妖塔呀,就是这样的一个我们的三角形啊,哎,大家看一下,就是我们说有一个星号啊,下面呢,我们也有星号,然后呢,把这个去掉,这是我们的第二层,然后呢,再来我们这里是我们的第三层啊,所以把这个放过来,嗯,放这边好了,再来一层,我们这边写上一个星号,然后呢,我们来继续继续继续,这个呢,就是我们所谓的九层妖塔了,不过呢,我们当前只有1234有四层。
01:01
所以啊,我们按照这个规律呢,我们只要把它输出到九成就可以了,哎,老师啊,这个功能好像不难呀,哎,确实不难,但是怎么做呢?同学们想一想。哎呀,老师呀,我好像没什么思路,反正我看的是不难呀,你不就是把这些星号打印出来吗?哎,而且呢,你有九成,就是把我们的星号把它打印九回吗?那这个怎么实现呢?哎,我相信啊,我们同学们刚学这个的时候,可能啊,还真的找不到什么思路,所以怎么办呢?咱们用个笨方法,什么笨方法呢,就是我们一层一层的把它写出来,我们再去找到它的规律啊同学们来,咱们写上它,咱们先写上啊,咱们要打印我们第一层的数据,好,那这里就太简单了,干嘛呢啊,我们写上一个for循环,我为什么要用for循环呢?是因为我们后面呢是打印三个型号,它不是打一个型号吗?我们是打印三个呀,所以呢,我们这里呢,就咱们就这样,我写上一个int I它等于零,然后呢,I小于我们的一是吧,诶然后写上一个I加加就行了,写完了以后,然后呢,我在这个地方呢,我们就写上打一。
02:04
给它来一个我们的星号就行了,就这么简单呀,来运行,运行以后大家会发现我们的第一个星号不就有了吗?好,我们继续继续,以后呢,我们来拷贝,拷贝以后呢,我们来打印我们第二层的数据来,我们也不用打印太多啊,咱们就打印四层,把这规律找到就行了,所以呢,我们来第二层,第二层呢,我们打印起啊三个型号,所以写上一个三,然后写上它,诶这不就可以了吗?我们来运行一下,运行以后看结果。哎,老师不对呀。你这个好像跟我们要的不一样啊,我们要的是一种什么样的效果呢?同学们还记得吗?我们要的是两行啊,怎么现在你打印的是我们的四行呢?这里给大家解释一下,原因就在于我们的这个方法的使用,叫这里咱们给大家解释一下来,我们的这个叫做print,这个方法呢,诶方法它打印我们的字符串之后,它会什么呢?自动添加换行,添加换行符。
03:04
所以啊,这样的话就意味着一旦打印了一个星号,它就自动换行了,再打印一个星号它又换行了,我们要的不是,我们要的是什么呢?我们打印三个星号之后再换行,也就意味着它并不是说我打印一个就换行,诶老师那该怎么办呢?这个时候我们就要说到另外一个方法了,咱们有一个叫print。这个方法呢,它打印字符串后,它不换行。哎,老师那不对呀,咱们还得换行啊,为什么?因为我们的这个方法我执行完以后,我得在下一行打印下一个呀,你怎么可能不换行呢?所以也就意味着我们用它不行,我们用它也不行,我们的两个联合着一块儿用,老师呀,什么意思,给大家看一下啊来。我把这个呢LN干嘛呢,把它去掉,我直接打印星号对吧?但是呢,我这也给它打印,哎,我这也把LN去掉,我们现在运行一下,运行之后看结果,同学们,你会发现我们的四个型号不就出来了吗?对不对,哎,它没有换行,但是又不对了,什么意思啊,我们得换行啊,什么时候换行,当你把它全打印完,你得换行啊,所以来拷贝,我打印完第一层我换个行,所以呢,我们这里就写个空字状,我们这里呢,就给它来一个我们的LN,然后呢,我们这么写就可以了,所以我运行运行以后看结果,你会发现我们当前不就换行了吗?对不对,诶,就是这个意思,同样道理啊,我们这个地方我们也要这么做,也就意味着我打印每层的这个星号,我都应该换一次,行对不对?同学们能不能明白?
04:39
如果能明白的话,那就简单了呀,我们现在运行之后,你会发现我们当前我们的一和三不就出来了吗?好一三有了,这是几个呀,五个呀,那五个的话,我们再来拷贝,拷贝以后我打印第三层啊,同学们打印我们的第三层,来第三层诶我们的第三层,然后呢,把这个写上一个五。
05:00
那这样的话不就行了吗?来把这个去掉好没问题,135出来了。我们的135出来了,哎,135都出来了,那么好,下面是12345677个型号吧,我打印我七个型号,那不就第四层吗。好了,我把这个地方我们来啊,咱们写上一个我们的四打印我们的第四层,然后呢,把它改成七,那这样的话就可以了,来大家看一下,我们点击右键,我们运行一下看一看,结果你会发现啊没问题,1357出来了吧。哎,老师,你这么写太笨了吧?哎,没错,咱们这么写确实有点笨,笨是笨,但是我们照着这个思路的话,是不是能够把咱们的九层妖塔打印出来呀,对不对?我相信没问题,只不过呢,我们觉得太麻烦,肯定这样的话就不是很合适了吗?那我们能不能找到其中的规律把它封装一下呢?其实大家有没有发现我们的这些代码是不是完全相同啊?你看完全相同,唯一的区别是不是我的1357呀?这是第一层,这是第二层,这是第三层,这第四层,我如果把这个给它注掉,同学们看一下来把这个注掉,我注掉以后干嘛呢?诶,我别一层一层写了,我现在直接直接写九层,我们写上一个负循环,我直接写上一个负循环,然后呢,我写上勾,它等于我们的零,然后写上一个勾,然后干嘛呢?我们写上一个九,然后呢,写上一个勾啊,咱们加加我什么意思啊,就准备把这样的代码呢,我循环我们的九遍来拷贝,拷贝以后大家看看我这样的话不就行了吗。
06:33
我这样的话就等于第一个,第二个,第三个,把每一程都写一遍不就可以了吗?对不对,所以这样的话呢,就等同于把它优化了一下,哎,老师呀,还是不对呀,为什么呢?因为你的每一层当中不是1357,那么以此类推的话,下一层是九了吧,再下一层是不是我们的11呀?哎,那这样的话有没有什么规律呢?其实我相信大家已经找到规律了,什么规律啊,这不就是等差数列吗?对不对,1357不就全都是我们的奇数吗?那么奇数的话,我们从零开始,第一层就是零啊,为什么呢?因为我们从零开始吗?那么第一层是零,那么零是一,那么我们的第二层就是一,一就是三,就意味着我们现在的规律是什么呢?我们的规律就是我们的零它会变成我们的一,而我们的一呢,它会变成什么呢?它会变成我们的三,然后呢,我们的这个二呢?诶,我们会变成我们的五,大家想想。
07:28
规律在哪啊,不就是你当前的这个值,你乘二加一就行了吗?这里呢,我们的勾,我们乘二加一不就行了吗?同学们,你们想想是不是这么个规律,以此类推,如果是我们的第四层的话,我们这里是不是七呀,对不对,那如果是我们的第五层的话,那是不是九啊,哎,这样的话总共九成啊,总共九成,你这么一写不就完了吗?来,咱们运行一下,试一试运行。运行以后看结果大家有没有发现没有问题吧,哎,我们的九成就出来了,但是九成出来了以后好像并不满足我的要求,为什么?因为我的要求啊,它是以这种形状出现,你这个全对齐了,哎呀,好像感觉并不合适,它不像个塔形啊,对不对,它就是个三角形嘛,那怎么办呢?同学们有没有什么好的办法呢?这里我们给大家去说一下,其实呀,我们可以在我们星号的前面有空白呀。
08:22
你把这个空白打印出来不也行了吗?诶对呀,我打印空白就行了呀。可是这里的空白我,哎呀打印多少个呢?其实大家会发现我们这个也是有规律的,大家看找一下我们的规律啊,我们现在总共是几成呢?我们现在总共是我们的四层,然后呢,我想是,然后呢你的零就是第一层,它打印几个呢?他打印的是我们的一。233个对不对,好,然后呢,总共是四层呢,那么现在如果是第二层的话干嘛呢?零一嘛,一的话,那么打印几样二,那么来我们再写四层,如果你是我们的第三层的话,是不是打印一呀?哎,同学们有没有什么规律呀,有没有发现404142诶031221是不是全都比他小一呀?
09:10
所以也就意味着我们其实总共有四层,但是真正要打印的其实只有什么,只有我们当前的三层需要打印吧,所以也就意味着我们当前的这个空格啊,不需要打印那么多层,要比我们的成呢,要小一层就行了,所以我们这里来,我们写上一个for循环,我们写上什么呢?我们叫做我们的int,我们的嗯,I,它等于零,我们这里呢,首先大家记住一件事情,我们不可能打印我们的什么,我们的九成,所以不可能是九成,它应该是八成,那么你八成我应该打印几个空格呢?我刚才说过了,我们应该是什么呢?我们当前是第几成,你应该用我们当前的它减去它吧,所以我们应该用什么呢?我们的它减去我们的勾就行了,这么写就行了,爱加加写完了以后,你在这里呢,我们加上一个空格就可以了,就这么简单,同学们好,我现在呢运行一下看结果。
10:06
运行以后看结果,大家看有没有问题,没有任何的问题,对不对,所以啊,我们当前的程序应该是对的,但是我觉得我想改善一下什么,想改善一下呢?你这里是九啊,所以我把九提出来,我们叫int I或者叫做level等于九啊,九成嘛,然后呢,把这个地方我改成叫做level,然后这个八呢,我就写上了,我们叫做level减一就行了,别的我就不用改了啊,我这里写完以后,我们再来运行一下。运行以后大家看结果,那这样的话,我们如果改成我们的什么七成,我们再运行,运行以后别的不用改,只要改它的成就可以了,你看就出来了,我要改成三乘呢,哎,改成三乘我们再运行。我们现在的这个功能呢,不就更加完善一些了嘛,对不对,你想要几层就是几层,只要你找到其中的规律的话,这样的代码我相信大家自己是不是也能写的出来,只不过啊,有个细节啊,就是我们这里的打印不要弄错了,我们这里叫print,这个叫print LN啊,它是换行的,这个是不换行的,别的其实就是找规律了,只要你把规律找到了,什么样的题目呢,基本上也都能做得出来了啊。
我来说两句