00:00
行,那么关于for循环呢,咱们就告一段落了啊,那接下来的话呢,我们就讲一下这个第二种这个循环结构,哎,For完了以后呢,是不是就该讲这个while结构了。诶for呢,我们花一点时间,那while的话呢,其实讲起来就能够更快一些。啊,因为呢,哎,都有这四个元素,只不过呢,是不是放的位置不一样了。来把它呢,CTRLCCTRLSCTRLV啊我们保存一下。在这啊。好张过来,然后呢,刚才这里边儿我们写了一个啊,他。呃,包括呢,还有一个这个啊。哎,我把这个都转过来吧。And I。粘过来啊好,这呢,我们来讲一下这个well。啊,Well well,在我们这个英语里边,就当什么什么的时候是吧,哎当满足的时候,哎,那你就执行你的循环就完了。OK啊行,这个我就不要它了啊,那这个呢,我还留着说呢,凡是循环结构就一定会有四个要素啊,1234,那关键呢,我们来看一下这个while循环它的格式是长什么样的啊。
01:02
哎,首先呢,While啊,关键字往这一放,这是个关键字啊,都是小写的,一个小括号,一个大括号。哎,就这样。然后呢,哎,这四个部分怎么放,这是我们这个的关键啊,注意第一个位置呢,放这儿。这个我们称为呢,叫循初始化条件部分。放在Y循环的外面啊,然后这个小括号里边呢,放在二。就是相当于这个条件完了以后呢,我看一下你这个是不是满足,是处处就进去,进去呢,这里边儿就放到循环体。那四呢,似乎都没地儿放了是吧。二就放这了,那四呢就放这儿。哎,所以这样1234。那就这样啊好,那么它的一个执行过程呢。哎,这个执行过程啊,跟咱们刚才那个for循环呢,是完全一样的,那就是首先一一完了以后,二二呢,如果说它是个处,那就是满足这个循环条件就三。循环体啊,循环体完了以后呢,迭代的条件变一下,就A加加呀是吧,哎,然后呢,接着再判断一下那个二呢满不满足,满足的话呢,再进行循环,呃再去迭代呃,再去走点点点直到。
02:12
哎,我们这块呢,比如说这个二呢,不满足了,结束。哎,这个呢,跟咱们刚才写的这个for啊,这块是完全一样的。OK啊,你看这块又完全一样。它有四个部分,它呢也有四个部分。是不是可以从我们至少理论上能够判断出来这个for循环,你看我这样写对不对哈,它与while循环呀。他俩就可以相互转换呀。你看咱们前面讲if else,讲three case,当时说过呢,啊,说你这个,呃,If else的这个范围大,呃,这个Switch case这个范围小,呃,能用你的一定能用它,能用它呢,不一定能用它,这个有小大之说,而我们现在这个呢,如果要画个圈,他俩的圈呢,是不是就完全重合?哎,能写for就能改成well,能写well就能改成for,这就叫做相互转换。
03:02
因为呢,你俩不就都有这四个部分,那过程也都一样是吧。那就是你把原来写for的这样一个,呃,放一放二放三放四这个位置,你改成用for的这样一个逻辑不就行了吗。哎,比如说刚才那会儿我们做了几个需求。啊,你看这个for里边的啊,哎,咱们这不做了一个这样的一个需求吗。然后呢,还做了一个这样的一个需求这儿。哎,咱把这两个需求呢,哎,咱也改成用这个,Well,你看怎么去写。回过来。保存一下,这呢,先来一个,哎,需求一。哎,需求一啊,这呢,我们就也是便利50次,Hello word。啊,便利。哎,54。Hello word。行,那这时候我们用while啊,你看这个呢,叫初始化条件,那我是不是上来就写一个特I等于一是吧,然后呢,我写个while。
04:01
啊,你。诶后边这块呢,叫循环条件I小等于50,那我就写到这儿。哎,这样,哎,然后呢,我们接着写,这个叫循环体。哎,这里边儿我们就来一个叫哎,Hello。哎,Word,哎,这就叫循环体了,行,那这个三和四呢是放在一起的,注意这个四呢,这叫爱加加,这个爱加加呢,哎也得写到这。所以这个呢,是大家刚开始写的时候呢,特别容易丢的啊。哎,我在这写一下啊,一定要小心。小心啊,不要丢了。啊,为啥容易丢呢?因为你看那个for的时候呢,它就是一个萝卜一个坑。你肯定不会丢的,因为这块你要没写,你看着都感觉怪怪的啊,但是这块呢,就仨坑。一个坑啊,这都不算坑是吧?啊,这有个坑,这个坑,然后你写了这个三的时候呢,经常你就把这个迭代条件给忘了啊,那你要是忘了的话呢。
05:05
会怎样?这是不是就停不下来了?对,I是1I小于等于50满足,输出了I小于等于50满足,再输出又满足,那这个程序呢,就变成了一个死循环了。啊,这个我们变小一点看。知道吧,所以。Well。嗯,啊,它的一个test.java。编译的话呢,没事儿。编译的话,你语法上这这都没啥问题啊是吧,但是真正运行的时候呢,就麻烦了。走起,哎,停不下来了。啊,这块你CTRL一下啊。说C这就强制给大家停一下啊。CTRLC就是停止的意思了,好,这样才行,哎,这个呢,就是因为我们忘了这个迭代条件了,所以大家在书写的时候一定要注意这个事儿。呃,外物循环容易丢。好,这个我加上以后保存再来。嗯,编译运行,哎这呢就50次的,哎,Hello就出来了。
06:04
行这呢,就是咱们这个需求一啊,行,那这个需求完了以后呢,接着啊,咱们来看这个需求二啊,刚才这块呢,也写过他啊。嗯,这个CTRLC。哎,这个事儿。那如果说呢,这个呃外号循环呃,For循环这块还算熟悉,然后呢,你还是啊,就把相应的位置呢,你把它再重新的整合一下,该放哪儿还放哪儿,哎就是。一呢放在这儿,二放在这儿,三放这四放这儿,其实这个事儿呢就成了。那这块我们就直接来写了啊,哎,首先哎,注意你看这块有个小细节出现了,刚才呢,在写这个题目的时候呢,上面这个呢,我们需求一里边这叫A,这个呢,写这个需求三的时候呢,我这也叫A。当时我们说说没事儿。因为出了以后呢,这个变异就不过了是吧,那问题现在呢,我还能写I。等于一吗?哎,不能了,因为这时候这个I呢,它没在里边是吧。哎,所以呢,就是对于我们这个while循环,非要讲跟for有什么小区别呢,就是这个初始化条件部分呢,它不仅限于for,哎,Well,除了well呢,它还有效啊。
07:09
对,这块我们稍微写下这个五吧,哎,For循环和while的一个小的一个不同啊。小区别。小区别的就是这个初始化条件的作用与范围不同。啊,那么while循环。哎,中的这个初始化条件。啊,在这个外循环结束以后。啊对,依然还是有效的,如果你要这个变量的话呢,这个变量作用率呢,还还存在着呢。这个要小心一点,所以这块呢,你就不要叫I了。不要叫an,那你就叫个J吧。或者你如果这样写行吗?也可以是吧,哎,不管你上面20几了,我重新给你赋个值接着用也行啊也行啊,这块咱们是俩事儿,所以我就不混着去用了。好,这个呢,我就用接了啊,然后呢,我们来一个Y循环让接呢。
08:04
从一开始小于等于100。然后呢,在这个范围里边呢,我们去判断一下啊,说如果接呢,曲目二呢,那等于零,那你就是个偶数。哎,我就把你输出。哎,把接呢就输出好,输出完以后注意小心一点啊,一定不要忘了接加加。哎,咱们上面也说这个事儿了啊,好结加完以后呢,这个就变成二了,然后二再进来,再判断,判断完再接加3456,以此类推,一直呢,不满足就结束了。哎,这个事儿呢,就完成啊CS以下,哎先把第一个需求呢先搞定。过来。编译运行,哎,这呢,我们从二开始啊,一直到这块结束没问题啊。好,那么这个完了以后呢,我们再来看一下获出获取这个偶数的个数,这块跟咱们前面写的就完全一样了。那一个count等于零,它呢,来去。哎,记录偶数的个数,这个我就一起写了啊,萨姆呢,等于零。
09:05
哎,记录对偶数的总和好,然后呢,一旦你要是个偶数呢,我们这个个数呢,就加加。诶,然后诶这个是一个英文格式下的啊,然后呢,这个萨呢。就加等于一下我们这个阶。嗯,就行,然后出来循环,在这个位置我们去做一个输出。啊,跟这个类似啊,我就把这个呢粘过来了,CTRLC。哎,往这一放保存诶就成了。哎,Con打印sum打印保存。哎,编译运行,哎偶数个数总和,哎跟我们刚才for循况呢是完全一样的。好了,那么这时候呢,关于这个呃,Well这块呢,我们基本语法层面呢就讲完了,刚才呢,我们讲了两道关于for循环的题,一个呢是叫水仙花数,一个呢是关于最大公约数,最小公倍数,大家呢,下来可以考虑呢,把这两道题改写成用while去实现。
10:00
哎,他俩呢,可以相互转换。啊,那关于这个语法呢,就说完了啊,那么大家呢,可能最后还会有个小疑问,那既然呢,我们在一个呃,Java这个当中啊,说这哥俩呢,可以相互转化,他们相当于整个可以使用的范围是完全重叠的啊。你会想个问题。说干嘛给俩?是吧,哎,那我还没告诉你,还有外物循环呢。多外循环呢,也是个循环,是也有这四个部分是吧,那就意味着是不是他们仨都可以仨都可以相互转换了呀。对,那这时候一个问题就说,那干嘛Java给整这么冗余呢。这个冗余呢,我们给它用到这个它的语法上了是吧,有一个for不就都能搞定了吗?那干嘛还整个while呢。干嘛还整个do well呢?哎。嗯,各有各的长处是吧。嗯,对啊,就是嗯,你要非要说冗余吧,就是确实啊,大家在开发的时候,你说我就不用well,我就真的不用well,遇到我也不用,我就用for行不行。
11:04
可以没问题是吧,我就避开不用是完全没问题,因为就这四个部分放的位置不一样是吧?诶但是呢,有的时候我们在具体写代码的时候呢,你会发现呢,就是有的时候你用放着写的会好看一些,经常用它呢,用来便利一些数。只要涉及到从几到几的这种,咱们就都用报了。哎,然后后边咱们还会讲一些方法哈,哎,有一些调用方法啊,用方法来判断你是处啊,你是false啊,作为这种循环条件会更方便一点,咱们写成well的话呢,看着会更漂亮一些。格式会好看一些,大家说这个都是一些外在的问题,我都不再不去关注这个事儿,其实也应该稍微关注一下,要不我们以后也不会讲拉姆达表达式了。啊拉代表是看起来就非常的漂亮,非常的简洁,以至于说呢,你都看不懂是吧?当然呢,你要是会写的时候,你会特别爽。你说从执行效率上来讲呢,没什么区别是吧,但是呢,就是因为写的好看,那我们就就那样去写,这也是一样啊,就是哎,很多时候呢,你要用造句,写完就不是特别好看啊,所以呢,我们还还是要用一下wild,那就是各自有各自的场景,但是现在呢,因为咱们还没有讲一些方法,所以呢,大家先知道这个事儿就行了。
12:09
以后呢,我们都会见到的,那现阶段呢,你怎么做呢?就是哎,我用for呢,你也用for,我用well呢,你也用well就可以了,是吧,OK。好,那么关于这个外号循环的这个基本语法结构呢,咱们就告一段落了啊,然后呢,我们来看一看这个客户的题目,课后题目这块的话呢,我们来看一看这道题先这个呢叫猜数字的一个游戏,说呢,随机生成100以内的一个数,猜这个随机数呢是多少。哎,从键盘呢去输入,如果呢,你输入的这个大了啊,就提示说大了,哎输入小了就提示小了,猜对了那就猜对了,问一共猜过多少次。哎,就这样的一个题目,行,那把这个题目呢,咱们做一下啊,CTRLC回过来新建一个Java文件啊,这种关于while的一个使用啊。Test这个我们叫E。在这啊。好转过来。把这个呢调一下。
13:01
CTRLCCTRLSCTRLV啊保存一下。好了,嗯,这个题目呢,刚才我们已经说过了哈,然后这块的话呢,呃,首先生成一个随机数。那这个呢,我们直接呢,在这个程序里边呢,去生成就可以了,这呢也可以看到是我们这个第一步啊要生成。一个啊,100以内的数,100以内,咱们假设就从一开始吧。啊,这个范围的随机整数。啊,没有画面OK啊这个。重播一下。嗯,看好了吧。嗯,好了啊行,这呢是我们这个第一个需求,说生成一个一到100范围的一个随机整数,OK,那这呢是我们说的第一个需求啊,这个搞定以后呢,那么接下来那我们还涉及到一个需求,说从键盘那去输入数据啊,这呢就涉及到我们这个scanner的一个使用了,诶这是咱们的第二点啊,使用scanner。诶,然后呢,诶从键盘。哎,获取啊数据。
14:01
那这个获取数据的话呢,我们就要想到说这我得调几次next int呀。哎,就不确定了,那因为这时候你需要呢,拿你自己输入的这个数呢,和这个随机数呢,做一个比较,那到底比了多少次不确定,那这呢,我们就需要用到这个循环结构了。啊,这常是我们的可能是第三个小的这个需求啊说呢,使用这个循环结构啊,然后呢,这个进行多次啊循环的这个对比啊和这个获取数据的操作。啊,然后这块呢,直到啊,如果我们这个从前呢,获取这个数据呢,跟我们这里边产生的随数呢相同了啊,那么这个事呢,就结束了。那同时的话呢,我们需要呢,去记录一下到底拆了多少次,还得额外的定一个变量是吧?啊这个呢,其实是在我们这个过程当中,我们这个出现的啊行这呢,就我们整个这题目呢,简单的来分析了一下,那下边的话呢,我们就开始来写这个事儿了,那第一个呢,需要生成一个随机数,咱们前面呢,讲这个mass.random的时候呢,提到过,诶,获取一个指定范围的随机数的一个公式。
15:01
啊已经引入过了啊,哎,那么这呢,大家直接去调用就行了,诶这呢,我们就直接来一个int型的啊具体的获取一个,比如说我们这个叫诶target吧,目标的这个值啊是多少呢?或者这个写成叫随机啊都可以啊ma点啊random。啊,这个呢,我们去乘以一个啊,100减一再加一。就100,然后把它括起来。括起来啊,前面呢,我们再把它强占成是一个in特啊,然后呢,再加上这个AA就是一,哎,所以这呢,就我们获取到一个随级数啊,叫它也行啊,刚才说了你叫这个random都可以啊,哎,建明之意就行。好,然后这个完了以后呢,下边我们再接着呢,通过scanner去获取这个随机数,呃,因为呢,我们在循环里边呢,你上来就得先判断一下,看看你获取的这个,呃,跟这个随机声这个一不一样啊,所以我们前面呢,得先把这个scanner呢先创建出来啊,然后调一次next in,所以呢,诶这就涉及到我们scanner使用的这样一个步骤了。诶,第一步的话呢,先倒包。
16:03
有点,哎,Scanner。哎,就这样啊,然后第二步呢,我们这呢,去实例化。去你一个scanner。哎,system.in OK,哎第二步,然后第三步呢,我们需要呢,去从键盘诶获取一个随机数啊这呢我们去输出一下。哎,我们写说啊,请输入啊,一到100啊范围的一个随机数啊,不是随机数的啊,范围的一个整数。诶这个呢,就要求用户呢去做这个输入了,那至于说呢,他是换行输呢,还是就在这一行输呢,这都可以,你要想去写到这一行,你就把换行呢给它去掉就行了。哎,来这个sc.next in。那这样的方式呢,我们去哎得到一个随机数,这个呢,比如说就我们猜的这个数吧,这个我称为呢叫盖死。概就是猜测是吧,好这呢,我们就拿到这个数了,然后自己写的这个数呢,跟这个数呢,我们去比较一下它俩呢是不是相等。啊,如果一旦要相等,我们这个循环就结束了。
17:01
哎,所以这块呢,我们这个循环条件呢,你看怎么写。这个怎么写?一旦相等就结束了,那要是不相等就不结束,就继续循环是吧?哎,所以呢,我是不是可以让random呢。哎,不等于这个盖。哎,是不是这样。啊,这不我们写了一个,写了一个呢,跟他这个一看,哎说不相等,哎不相等的话呢,这不我就进去了呗。哎,不相等进去以后那干啥呀。那你是不是就再写一个。是吧,那这时候我们就再去有这个提示,然后再有这个guess,只不过这个盖呢,我们就不用说再去给他声明了,是不是直接用现成的这个再重新赋一次值就行。对啊,好,那么得到这个盖茨之后,这我们这算第一次的话呢,这就算第二次了,呃,第二次这块呢,我们又输了个输,输完以后呢,这个呃,其实可以看作是就是这个呢,算循环条件,哎,这个循环体也好,或者算叫迭代条件也好,其实就算是不是那么明晰了啊,诶通过这个操作呢,我们相当于对GA呢,又重新做了一个赋值,赋值完以后呢,再看一下跟random是不是相等,如果要是。
18:10
哎,对,这个还如果要是不相等的话呢,就继续咱这块呢,别忘了它还有一个细节是吧。对对,他这块呢,说你进去之后呢,如果不相等,你得告诉我大了或小了是吧,对,所以这块呢,咱们还不能说不相等就直接再输入了,你还得再多做点事啊。If,判断一下啊,你是不相等了,那到底是大了小了呀,哎,所以说哎,如果说咱们的盖哈还要是大于random了。哎,如果大人,那么这块你提示一下。相当于有助用户呢,接着再去输入的时候呢,它有一个方向了,就。那厂长说,哎,你输入的数据偏大啊。或者你输入的数据。大了。哎,这个意思好,这呢是其中一种情况,然后再来一个else if。哎,小于random。
19:01
哎,在这啊,说你输入的数据小了。哎,小了,哎,你说我这块还用不用。再来个老师。不用了是吧。哎,这如果要else的话,这肯定就是相等了是吧,相等的话呢,其实我们这个循环就结束了,哎有的同学可能会想说呢,我就来个break是吧,哎其实这块的话,这个操作呢是进不来的。你想是吧?对,你看第一次的时候呢,这块如果要是不相等,它才能进来。哎,那就肯定不可能是相等了啊,因为你相等要进这他进来的时候就已经不相等了。是吧,所以这块呢,其实进不去的啊,这块呢,其实啊,你说我就写了,写了就写了也没关系啊,只不过你写了之后呢,你自己知道肯定执行不了是吧。这个写不写都行啊好,那进来以后呢,相当于我们针对呢,呃,不相等的情况,要么是大了,要么是小了,这块写一下,不管你是大的还是小的,总共呢,总总归呢不相等,不相等就得是重新输入。重新输入完以后。再去回来比较发现呢,还不相等,再提示我们大了还是小了。
20:06
然后呢,你就得再去啊,输入一个值,然后第三次输入的时候呢,假设一看,诶相等了。那相等的话呢,这个我们循环就结束了。这个循环能结束的唯一条件啊,咱们这里边儿有没有break啊,就是它不满足。那就意味着就是相等的时候,否则的话你就出不来啊,行,只要是能走到这儿。是吧?哎,这个能结束循环。哎,就意味着。啊,这个我们的这个。哎,是不是和我们这个盖相等了。哎,相等了,所以说我这个代码要写到这儿的话呢,就相当于是,诶恭喜你,是不是猜对了。哎,恭喜你,猜对了。哎,这样就可以了,行,那接下来呢,我们有个需求呢,说你得告诉用户到底一共拆了多少次。
21:02
哎,猜了多少次,来我们看看啊。这个首先呢,我们得定一个变量了,这个变量呢,你一定不能定义在循环里边,定义在循环里边呢,除了循环不就没有了吗。所以得定在外面了啊,所以呢,我们在这个位置啊,补充一个。啊,如果这个看成三了,似乎我们这个该是四的是吧,但是毕竟这个写前面了嘛,诶把这个呢,我们改成是个哎四的了啊这呢我们需要呢去呃声明一个变量啊来记录呢猜的这个次数。哎,In一个,比如我们来一个叫哎,Guess的一个count。哎,就count了,好,那可能呢,我们习惯性的就把它写成是个零了哈。对,这个要写成零的话呢,其实就得小心一点了啊,你自己试一下啊,比如说哎,我们第一次呢,获取这个值,这那是个零,一上来呢,这个就不满足,相当一上来就猜对了。哎,问猜了几次,总不能说拆了零次吧?是吧,这块呢就不太合适了。啊,包括呢,你比如说我们第一次呢,假设啊,第一次没猜对,哎,先写了个数,没猜对,没猜对呢,告诉我们比如说大了。
22:06
大了,我们这块呢,又来了一个数,又来了一个数呢,这一猜猜对了。首先在里边呢,对这个值呢,得做一个。是不是支撑啊。哎,你既然你又输了一个输,这时候我们就来一个GA。你得来个加加。因为你又输入了一个数嘛,哎,又输了一个数呢,这个加加完以后呢,再比较,哎,第二次比较呢,假设相等了。那香囊这块呢,其实我们应该拆了两次了。哎,你这里边加加变成一不合适,其实这个值呢,初始值应该是一。对细微的大家去体会一下得啊行,那在最后的时候呢,我们把这呢做一个输出。哎,这上写一下说哎共。哎,共共拆了多少次?Guess can't。哎,加上一个次,哎,保存一下,哎这个事呢就成了。
23:00
啊,然后最后呢,不要忘了我们这个防止这个内存泄漏啊,哎,死干。第二。这个再加个一是哪块。嗯,不用带嫁衣了吧。哎,我一点你看先看这个啊,SC加close这个没问题了啊好,刚才那说说这个盖还得再加个一需要吗。应该不用了。你看嗯,假设啊,第一次这不是我们先输入了一个数,这个呢算个一了,第一次呢,假设我们没猜对,没猜对呢,就进去了,进去以后呢,这不你又输了一个数,这是我们就变成二了,然后第二次呢,猜对了。哎,这不就两次吗?啊,就可以了。嗯,对,就不用再加一了啊,因为这个位置我不是改成一了吗。好,那这个题目呢,其实就这样来去处理就行,来JC啊。哎,它的一个TEST1。要Java。Well test1好,这块呢,要求我们去输入一个整数了,嗯,这个输入的话呢,这个如果大家想猜的能够快一点的话呢。
24:05
有一个二分法是吧。对的啊,所以我先整个50。哎,我这个大了啊,25小了。38行。小了。38~50之间。哎,这多少。12加六四四十二吧。差不多就行前后是吧。又大了哟。40。啊,40对了啊,猜了几次,你看12345,这不五次吗。这就行是吧,哎,这样你可以跟同桌你俩玩游戏,看谁快是吧。嗯,行,这个呢就完事了啊。嗯,这个呢是咱们这道题,然后呢,接着我们再看下边还有一道题,哎,这个题呢,也有点儿意思啊,说折纸珠穆朗玛峰。说世界上最高的山峰是珠穆朗玛峰,最高高度8848.86啊,这个现在好像还在变化当中啊。
25:03
说呢?呃,假如呢,我有一张足够大的纸,它的厚度呢,是0.1毫米,问折多少次可以折成珠穆朗玛峰的高度?啊,一般这个呢,比我们想的折的次数要少是吧,对。对,他这个是指数级的一个增长啊嗯。古代好像我记得说是有一个那个故事啥的。就说一个国王要奖励一个。好像是完成某项这个这个工作的一个一个一个一个。一个人一个大臣啥的是吧,问他要什么,他说要这个米是吧,是多少乘多少来着。八乘八呀,还是16乘16啊,说这个放一厘米,这个放两厘米,这个放四粒啊,以此类推是吧,来说只要放满的话那就行了。这一看呢,感觉上应该放不了多少,结果后来发现呢,全国的粮食也不够是吧?哎,这也是个指数级的增长啊。好,那跟这个呢类似,看下这道题,呃,首先呢,这块呢,提到说珠峰的一个高度,然后呢,还有纸的一个厚度。
26:05
哎,那接下来的话呢,我们要做的事呢,就是每次让这个纸的厚度它一折折叠,相当于它的厚度就乘以二了。哎,每乘以二一次,我们现在就得记录它一次。啊,最后呢,结果就是你看这个厚度量超过它的时候就停下来。就可以了,OK啊行,那这块呢,首先我们先呢需要去声明。啊,第一步啊。哎,声明一个呢,是珠峰的高度。啊,珠峰的高度,那另外一个呢,就是我们这个纸的一个默认厚度。哎,或者叫初始化的一个厚度啊。啊,这就是我们的第一步啊,然后第二步的话呢,我们这个纸的厚度呢,要变化了,但是它是循环的去变化,所以说我们通过呃循环。哎,通过循环结构啊,不断哎调整纸的厚度。OK啊哎,不断的调整这个纸的厚度,那那这样呢纸呢就越来越厚,然后呢,呃,第三步呢,就是判断,哎纸的诶灰这个应该其实跟我们这个循环呢,就结合在一起了哈,哎,我写到这吧,啊说当这个纸的。
27:14
哎,厚度啊,超过。这个珠峰高度时。哎,停止。循环。来停止这个折纸啊好,那么在这个过程当中呢,哎,其实我们还需要呢,去定义一个变量来记录呃,折纸的次数。啊,记录。哎,折纸的一个次数。OK啊行,嗯,然后呢,最后呢,你把这个折纸的这个字数呢,给它打印出来就行了,嗯,这两个呢,其实应该是他在下面是吧。嗯,这是第三个啊好,那我们来看一下这个需求,首先呢,来去定义两个变量啊,这个变量的话呢,你看首先比如说这个纸吧,哎,我们叫做这个paper。它是吧,这个后端位是0.1,那不妨我就定义成是一个double型的,这里边涉及到这个单位。
28:02
啊,是毫米。好,那既然这个呢是用的单位毫米的话,我们珠峰的高度也用这个毫米来表示了啊呃,珠峰的一个。就珠峰吧,这样啊。8848。860是吧。单位。毫米。行,那这样我们就定义好了,然后下边我们去定义这个变量,这个变量你可能一开始没想到,没想到的你就先写后边的,后边你发现呢,需要定义变量,你再回来补也行。啊,这个大家写代码的时候呢,呃,刚开始写的话呢,可能经验还比较少哈,呃,如果你要是经常做类似的问题的话呢,知道一上来既然涉及到这个记录多少次了,肯定得需要定义变量了。啊,当然你现在经验少呢,不妨你就先不管它,就像我们刚才来做这个问题也是一样哈,这个呢,看我们不也是后加的嘛,诶大家自己写代码的时候,你可以就按照你的思路,呃,先写这儿再写这,后来我就写这儿了,写着写发现了少东西,少东西回来再去补也可以。啊,也可以的啊行。
29:00
过来啊,这个呢,如果你要是清楚的话呢,我们就提前就定义好了,说int啊,这纸多少次,比如我们就来个count,首先呢,就来个零吧。哎,先写成是零了,OK,下边的话呢,我们需要通过循环的方式呢,不断的去修改paper的一个高度,最终呢,主要是我们需要判断一下,诶,这个是不是折纸的高度大于这个珠峰的高度了,所以呢,如果你发现这个paper。Paper。是一样是吧。如果这个paper它的这个高度呢,是小于等于这个珠峰的高度的话呢。哎,这不说多少多少能够。折成珠峰的高度,就是咱理解成就超过珠峰的高度吧。啊,如果呢,你发现这个paper呢,是小于等这个珠峰的高度的话呢,我们就还得继续折纸。就在这里边了是吧,哎,那在这里边呢,就相当于你让这个paper呢得去,是不是乘等于二啊。哎,这就是折一次呗。嗯,好,那一旦要折一次的话呢,我们对应的这个count呢,应该也得加加一次。来捋一下啊呃,首先呢,第一次我们这看的是零,如果呢,一上来就发现这个paper呢,比这个要高,那直接呢就退出循环了,就到这儿了,所以呢,本身也是零一次也没折。
30:09
啊,你要折了一次,哎,首先是零,然后一判断呢,它小于,然后呢,诶折了一次,折了一次呢,这个变成一了,然后折完一次以后呢,如果发现不满足了,退出来,诶这个我们是零是对的,对吧。哎,这个就不要写成一了,细微的体会一下就行好,那么当这个循环要是不满足的时候呢,那就意味着呢,这个paper呢,就大于这个珠峰的高度了啊这呢,我们写一下啊说这个呃,Paper。诶,它的高度为啊,这个我们也把它算一下啊。哎,这个呢,它是一个毫米啊,毫米咱们给它改一下吧。把它改成这个米。1000是吧,哎,但是这块你注意我们要是你担心啊,说这个优先级会不会偏高一点,把它给先做连接了,这就除法就报错了,那你可以先给它括起来是吧。诶,这样保险一点,然后这paper呢,因为是个double型的,它除以这个1000之后呢,还是个double型小数点也带着呢。
31:04
哎,它的高度为这个。啊,然后呢,这个逗号啊,超过了。呃,珠峰的。哎,高度。那这个高度呢,我们把它呢也打一下。哎,就他啊,然后呢,我们后边呢,再输出去时候共折纸多少次。这样啊。哎,共共这个,哎折纸哎多少次。哎,保存一下,哎是不是就成了。来保存测试啊。回来Java c。哎,test2.java。好回车。啊,27次就可以了。啊,还是比我们想的要少的啊,哎,那折完以后的这个高度呢,是啊,1万多米了。哎,超过了这个珠峰的这样,哎,这这个单位也得处理一下是吧,高超过了珠峰的高度,这个我们让他呢也去处一个1000是吧,诶你要担心的话呢,你就把这个呢给它括起来就可以了,行再重新再跑一下啊。
32:09
编译运行,诶超过了主控的高度啊,就这么多哎,折纸27次。行,那这道题呢,我们就这样来处理就行好,那么通过刚才呢,我们这两道题目呢,大家再去,呃,使用一下这个Y循环,包括呢,你也可以考虑呢,把这个Y循环呢,再改成我们的for循环啊也是OK的。
我来说两句