00:00
好,那接下来我们讲一个知识叫做签到循环,哎准确的说呢,这个签到循环呢,其实不算是新的知识点了,哎就像咱们前面讲这个if一样啊,If false呢,这个讲清楚以后呢,我们说在if里边以必要的时候呢,可以再写一个if,哎这呢就叫嵌套这个分支。嗯,就是if里边呢,又分不清楚了,又得分一下,那就再写个if else,再分不清楚了,再写一个,对,咱们从经验上也讲过了,大家呢写if else通常不会超过三层,最多三层啊,当你超过三层的时候呢,不是说不能做也可以做,但是呢,你想想你这个分叉分的太多了,你回头自己就蒙圈了啊,所以呢,一旦你要超过三层的时候呢,这时候及时的终止,回来看一下是不是哪块写的设计上有点问题,重新的再去思考一下啊,一般一般呢超不过三层,那这呢都叫做这个嵌套分支,或者叫嵌套if house,那当于我们循环结构来讲,有的时候呢,我们也必要,哎对一个循环呢,在外边再套一层循环,就是循环里边套循环,比如说我们这个for里边套for啊,或者for里边套well well里边套套套for啊,While里边套well等等,就怎么搭配都可以啊,总之呢,外边是一个循环,里边是个循环,这就叫做嵌套循环。
01:21
同样的道理,嵌套循环,大家在开发当中通常也不会超过三层。而且三层都很少,嗯,所以说一旦呢,你要自己写循环呢,发现想写三层了,这时候呢,稍微的这个这个心里边嘀咕一下得是吧,看看嘀咕知道啥意思了。思考一下,想一想是吧,哎,这个是哪儿的话是哪儿的话,嘀咕东北话,对我也分不清楚在哪了,因为我在东北也待过啊,对,就是你这个呃的想一想是吧,看看呢,这个还有没有别的方式做,就是写三层的时候已经算是很少出现的了,如果呢,你还想再写一层,那就行了,就别写了,你想一想看这个是不是哪块涉及的有问题啊,就是向条循环的层数一定不会太多。
02:12
所以说从这个角度来讲呢,我们这个线道循环其实不算新知识点了,只不过呢,属于我们开发中呢见到的一种情境啊,但是又由于这个循环呢,可能有同学呢,一个循环里边套个循环就懵了,所以呢,咱们这单独的给他拿出一个小结来说明一下这个签到循环的使用,其实里边没有什么新知识点啊。好,那咱们这块呢,就直接呢,通过这个代码的方式来体会一下线到循环的一些应用。我这呢就新建一个Java文件,不妨呢,我就叫做for,实际上呢,套循环也不管是里啊里边都OK啊。这个呢是我们想说明叫嵌套循环的使用行,那么首先呢,稍微提一下什么叫嵌套循环啊啊,就是我们将呃一个循环结构。
03:09
将一个循环结构A吧声明在另一个循环结构的循环体中。啊,循环体中另一个循环结构,我们叫做B。当你把一个循环结构放在另外一个循环结构的循环体中的时候呢,我们说就构成了前兆循环,构成了嵌套循环行,这个概念呢,其实很好理解啊,那有了这个嵌套循环的概念以后呢,我们自然而然的又生明又又出来两个这个这个词啊,一个呢叫做外层循环。嗯,一个呢,叫做内层循环。哎,这个呢也非常好理解,我们把这个循环结构A生明在这个,呃,另外的一个循环结构B当中了,那自然而然的是不是B就叫外层循环了。
04:10
外层对吧?哎,这个A呢,就内层循环来啊,这个以后呢,咱们讲数据库的时候还会讲这个circle,哎,Circle的话呢,你写一个查询,里边呢还可以再嵌套一个查询,诶我们把这种叫子查询,其实有点现在这个叫嵌套循环一样啊,哎,那里边那个查询呢,就叫做内层查询,这个叫外层查询,这个很自然而然的都这样叫呗,里边的不就是内层嘛,外边就外层啊,而且这个概率呢,它是相对的啊,比如说我在这个B的这个结构外边的又套了一层C,那你此时这个B呢,那就得看怎么叫了,是吧,相较A的来来讲,它就是外层了,对,相较于C来讲呢,那就是内层。它是一个相对概念的,嗯,好,那这呢,我们针对这个结构来讲哈,此时的外层循环,那就是结构循环结构B。
05:01
嗯,那么循环结构A,就是我们所谓的内存循环啊,这个我们先把这个CTRLCCTRLSCTRLV保存一下行,这个概念呢,非常好理解啊,那下面的话呢,我们来看一下这个嵌套循环的一些使用场景啊。OK,比如说现在呢,我们希望大家呢,从控制台输出六个星,哎从控制台呢,让你输出六个星,哎同学可能想这个很简单,直接呢一行这个,哎输出语句呢就搞定了,哎你这就写1234566个星,那比如说让我这行让你输出500个星,你就不乐意干这个事了,对这时候你就会想说,诶你这里边一个星呢,相当于是一个结构,你这呢一共有600个,我就想办法想用循环来做了,哎,这五个呢,你感觉还比较好搞定啊,哎,那我们现在呢,就来体会一下,这五个星呢,咱们不这样写的啊,因为你要多的话呢,肯定就不能这样做了,我们通过一个循环来做。
06:03
我写个方循环啊,In呢I等于一,I呢小于等于六吧,然后在里边我们写一个输出语句,这个时候呢,咱们就没有这个换行了,直接呢就写到这一行啊写一个行,诶问一下这个我写一个双引号跟写一个单引号这样的有区别不,这样行不行,这从结果上来看可以吗?可以的啊,因为你这是它又不涉及到跟谁运算啊,所以是行,那这呢就是我们写了这是循环体一个啊一共呢是循环六次,那就是六个星来执行一下,先看看张va c负负三四点张va好这呢就六个星,那你要是想写这个500个星,那你把这改成500就可以了,那这呢我。
07:04
就不想整那么长了啊好了,这个呢,是我们做的这个一行的这种情况,现在呢,我让你说出这样个效果,这呢是有个把这个过来一行两行行行,我想让你行个。哎,让输出四行就行,那这个时候呢,你可能会想,我是不是就把这个结构啊,这是输出一行吧,再写一行是吧,再写一行,再写一行,这不就是这中间记着得加一个换行。哎,把这个CTRLC一下放在这,诶诶这么着CTRLV一下,哎,这呢就是四行没毛病吧,没毛病啊,那现在我要让你写这个400行的,你就不愿意干这事了,你就你就会发现说这一行好像都是重复的未执行了,那就相当于我们这一行呢,也就说刚才写的这这一块代码啊,是不是它就相当于是又是重复未执行的东西,就是循环起了,那我就可以考虑把这个结构呢,放到另外一个循环当中。
08:24
哎,就用不着你这每次都写这个重复型的这个代码,把下边这个都删掉,把它呢放到一个新的循环结构当中,不妨呢,我们现在还用for来写啊,用while也一样,那我int还能叫I吗?你说非常坚定的说可以,这时候你注意咱们不是要把它放到这里面吗?你放里面你这个I是不是就肯定会作用欲在这里边了,不行吧,不行啊,就暂时的咱先拿出来啊,这个呢就不能叫I了,换一个勾吧,哎,不叫接也行啊,这个接呢,让它是一,然后接呢,怎么控制它的这个循环条件啊。
09:11
对,这时候就别晕了,你想让我们这个结构执行几次呢?是不是有四行呀,那就是四次别晕了这块哎写个四,然后接呢也是加甲,哎,我们就让他执行四次,执行四次,每一次呢都执行一次啊,所以把材料放进去,哎把这个再往后移一下,CTRL这个是不是就搞定了。哎,就这样来做,上面这个咱们输出以后呢,我就给大这也换一个行啊这样一下,因为这个我没有这个没有换行啊,这块换一行,下边这个结构呢,我们让它输出四行,每一行六个星,保存以后呢,来执行编译运行啊这个广泛这个刚才那个上面没有,我只是换了这一层是吧,那就再来一层吧。
10:10
或者我这样可以吧,哎,下面这块呢,是咱们输出的这个结构,这呢就是咱们所谓的叫嵌套循环,诶我们将这个循环结构放在了另外这个循环结构的内部,那么整个这个执行过程咱们稍微说一下啊,首先呢,接上来我们让接等于一,接呢小于等于四,我这个稍微这样一下吧。就只能这样了啊,我呢是这个节点一接判断一下它小于四,小于等于四,然后我们就进去了,进去以后呢,接着呢,走这个for里边这个for啊,然后又进个I的一,I呢还小于六,下边呢,我们就开始输入这个星,输入一个星,这就将这个控制台就输出一个星,输完以后呢,爱加加爱加加完以后呢,第二个行,然后呢,再加加加加加,一共呢是一行六个出来了,哎六个出来以后,我们这个循环呢,这不就再执行个七了,七的时候不满足这个结构这块执行完这个执行完以后呢,就有一个这个换行操作,所以这时候我们光标呢,直接跑到这一行,这一行呢,诶这个换行执行完以后相当于。
11:40
相当于是我们外层的这个循环的循环体这一次执行完了,对吧?哎,这个要理解就是我们内层循环呢,你执行电力一变啊,从一直到六便离一变,然后加上这个换行,执行完以后,只相当于咱们外层循环的这一次循环体质行完了,对以这一次完了以后呢,我们接下来还得回到这儿,哎,接呢再加加,所以你刚才不是换行了吗?所以接加加完以后呢,接变成二了二又小于四再进去,所以里边呢,又来了一轮啊,又是六个,然后又换了,又来一轮啊又换了,又来一轮,然后再换,接加加变成五了五小减四,不满足退出。
12:24
哎,那么我们想说的事呢,就是内层呃循环循环体,它这个循环结构呢,执行一遍,只是相当于我们外层循环的执行了这一次,哎,这个大家要注意一下啊,我们稍微在这做一个说明,哎,内层循环。哎,结构,然后呢,便利一变,哎只相当于。哎,这个外层循环,哎,这个循环体啊执行了一次,哎,这个大家注意一下这个情况,哎,这个是我们的第一个小点啊,哎相当于执行了一次,那么好了,那我现在说这样一个问题,说假设,假设我们的这个外层循环啊,需要执行M,这个内层循环需要执行N次。
13:31
就是便利一一变啊,就需要执行N次,那么此时我们内层循环的这个循题一共执行了多少次?哎,是不是就MM乘N乘M一样啊,就是执行了这两个乘积的这么多词啊。这个不难理解啊,就相当于我们这个问题当中,你这个内层循环的循环体不就是星吗?你这一数也能数出来,这不就24个星吗?对,就是外层循环呢,我们是四大轮啊,每一轮呢,你里边呢都来一遍,每一轮都是六个,那不就是四六二十四嘛,哎,所以这个大家要清楚啊,好,这个OK了。
我来说两句