00:00
OK,那么关于1V数字的所有知识点总结下来的话呢,就这六个点,大家呢,你看你掌握的好坏与否,你就直接看这六个事儿呢,是不是清楚,最后这个事儿呢,可以暂且放一放,说白了就是还是务实一点,你看你代码呢能不能写,然后呢,内存这个事儿呢,大家慢慢来。哎,那关于因为数组使用呢,这呢,我列了三个练习题,咱们一个一个的看一看,首先第一道题打开,这呢是一个现成的代码。啊,其实这呢,也确实是呃看到的一个,呃在哪看的呢?在这个卖卖上看的啊。麦麦,诶,不是那个。有个叫陌陌是吧,陌陌是干嘛的呀。交友软件啊啊。都登过不?嗯。好,这个卖卖卖卖呢,是就是呃,工作以后呢,很多的都会在卖卖上找一些相关的一些,呃,这个这个。行业的一些信息啊是吧,你想找哪个这个这个就是甚至说有求职的啊,也会在那卖卖上去发啊,这卖卖上呢有好多成员啊没事呢,有时候会闲扯扯啊,调侃调侃啊,其中呢,有一次呢,一个成员就发了一个截图,呃这呢说租房子呢啊这呢是一张图片了,我就把这个图片就翻译过来了,贴到一个呃墙上了哈,说呢这个地儿呢招租。
01:18
啊说这个呃,短租四个月啊,五百五一个月,一看就比较早了是吧,上海五百五这个北京都拿不下是吧。对,其实十年前的时候,应该是十多年前的时候啊,诶我在北京这个研究生毕业之后呢,呃,我们宿舍其他几个呢,他们就想住的舒服一点,所以他们就住的稍微的远一点,我那时候呢,就想说我得离学校近一点。呃,去哪都方便啊,所以呢,就离着这个学校很近,呃,当然我住的地儿呢,离学校稍微有点距离,我住到那个人民大学对面了。那个时候,十多年前,我还是住在地下室啊。住了一年时间,一个月呢是1100。啊,很夸张是吧,那挺贵的啊。
02:02
国内地下室里边还没有那个那个暖气。一般冬天呢,好像也不是特别需要暖气是吧,地下室好像稍微的暖和一点,但是也是稍微有点冷啊。OK啊,所以大家呢,可能每个人都会经历呢,稍微的。凄惨的一个过去是吧,就是原来给大家说的啊,就是爽量守恒嘛,原来你不爽一点,你后边呢,会会爽一些是吧,现在我在北京,我也买房子了。车呢,是因为没有号是吧,整不了号,你要买也可以买,没必要,其实是吧。好,这个这个,诶回头来我们看下这个题啊,现在这是一个短租呢,诶五百五一个月,然后这一个费用啊,这个怎么着说屋内呢,全是这个it人士是喜欢安静,呃喜欢租的,你过来打电话,打电话怎么打就打这个电话就行,诶写了一段代码。啊,所以说人家这个还是挺聪明的啊,这个希望呢,招同行怎么证明你同行看你能不能翻译出来这段代码。啊,说这是只有Java成员才能招嘛,你不是Java成员的话呢,其实你看这个代码呢,困难也不大哈,所以大家掌握了Java以后呢,别的语言语法上不太一样,但是你基本上也能看得懂啥意思。
03:06
行,那咱们是渣渣成员,这个呢,应该是没有障碍的。应该是没有障碍的哈。你看能看懂不?呃,两个数组,这呢是电话号码,就打这个电话号码,这个电话号码呢,它是一个字符串,它是拼出来的,怎么拼的呢?首先呢,我是遍历一下这个index啊,从头到尾一个一个的取是吧。这这呢,其实就是我们整个电话号码一共多少位啊。啊哎,你比如我这块我先取个二,这个二呢,拿出来以后呢,这个值不就是二吗。就是I是零的时候啊,这不就二吗。这个是二是吧,把这个二呢,就作为我们上边这个数组里边角标出现了,比如这个二呢,你去上边这个找角标,是不是就它呀。哎,所以这个一呢,不就出来了吗。然后接着取这个零零了,你就去上面这个数字找角零。八就出来了。哎,然后呢,这三找角标三。零是不是就出来了。哎,就这样一个思路,依思往后走,所以这个呢,就充当的是我们上面这个数组里边这个角标了,呃,意思呢,去拿一个,哪个里边呢去取,最后呢,这个电话号码就出来了。
04:10
啊,你就打电话,你说我是同行是吧。就行,哎,这个呢,就是我们这样的一个思路啊,这个就是实际生活中的一个应用。那就他。就行啊,这个电话你就别打了是吧。啊,第一道题。啊,OK,这就过了啊,然后我们来看一下这个第二道题。第二条题呢是这样的,说输出英文星期几啊,说用一个数组保存星期一到星期天的七个单词。这是七个单词,说呢,从键盘的输入一到七显示对应的单词。你像以前的话呢,我们只能把它定义成七个变量。现在不用了,你就放在一个数组里就行。嗯,做这个事儿啊,来看看。CTRLC,诶这个练习这块右键新建一个class,哎,这个我们写一个叫哎,数组的一个练习,咱就二吧。
05:01
啊,这样啊。嗯,把这个需求,这个是咱们一个案例了。哎,我就放到这儿了。好,没方法进来,直接写个may就行,一回车啊就行,这是一个模板啊。嗯,看看怎么弄啊,首先的话呢,这里边儿提到一个数组,你把这几个元素呢先存一下,那我们就先把这个数组呢先定义出来。哎,那因为元素呢,是吨嘛。那就是string形的数组是吧,首先第一步呢,我们去定义这个包含。呃,包含这个哎七个哎单词的这个数组啊,词针类型的数组,这个呢,我们比如说就叫做这个哎week吧。加个S也行,你一个磁针类型的数组。哎,这呢粘过来。就可以了,那由于呢,你是写到一行上去了,其实这个位置呢。可以省略对吧。OK啊。好,这呢是我们说的这个第一个问题,然后接下来的话呢,它要求我们从键盘上去输入一到七哈,然后显示对应的单词,其实说白了就是我要输入一。
06:02
你就把它打出来呗。数二你就把它打,其实呢,就根据你书的这个,我们去数组中找指定的角标吧。哎,这个事儿其实差不多了,就啊下一个问题就是从键盘获取指定的数值,这个呢使用scanner是吧。啊,Scanner这块你不用上来就写导报了,直接写。A new as garner。C这点in完事了,看自动打包了啊。咱们不是已经做过配置了吗。好,那么接下来的话呢,这个我们就写个提示哈,说请输入这个数值,这个呢,提示用户是一到七的。啊,这么着冒号一下。哎,那这个位置我们就干点是不是掉这个next int了是吧。你看这个呢,我们提示功能是很强大的啊,这个点你说记不清了啊,知道是个nice,你往下找呗。这就出来了。然后呢,光标放在这儿。Enter。你回车自动的帮我们去生成这个返回值啊。
07:02
这个呢,就是我们要找到具体的这一天啊,这个我们就写那个叫对吧。就他啊行,那下面呢,我们就相当于是做这个判断,其实也不用刻意的判断了,哎,为了这个健壮性的,你可以这样写啊,如果你要是写的呢,是小于。一的是吧。或者。呃,你是大于七的。那我这边就写说你输入的数据有误是吧。数据。哎,有误,哎,我就别写你重新输入了,你要写你请重新输入,你得负责啊,循环得写上是吧。啊,这个我就不负责了,就啊。哎,所以这块我就直接这样写啊else。啊,Else这块呢,相当于你写的就是一到七范围内的了。怎么着?Switch case吗?不用了啊,你要是不定义数组的话呢,你随时可以,但它数组都有了是吧。对,直接呢,你要找这个week weeks这个数字里边呢,这个D注意减个一是吧。
08:02
哎,得这样啊,然后点out一下,哎,所以这块呢,呃,你可以再加句话说你输入的这个对应的这个星期是啊,我就不整这么复杂了啊,直接这样。那最后呢,记得把SC点。Close是吧,关闭一下就行,是不是完事了就。啊,这个写下注释啊,获取这个scanner啊,使用scanner,然后下边呢,我们诶针对获取的数据啊进行判断即可。来,走起。好,请输入一个数值,这我来一个八。哎,不好意思是吧,不行啊,这呢我们再直接点它去运行,哎,这呢写一个二。哎,这不就星期二吗?来,再走,写一个七。但只有星期天。那就行了啊,哎,记着的话呢,这块记着减个一啊。这呢,就是我们说的这道题目。哎,结束了啊好,接着我们来看这个练习三。这呢,也是一个案例。
09:00
啊看这样啊说呢,学生考试等级的一个划分,从键盘呢读入学生成绩,咱们一边说呢一边呃给大家呢,去看一下这样的一个效果。看这啊说呢,从键盘呢,读入学生的成绩,找到最高分,并输出学生成绩的等级,这个等级呢是这样划分的,跟最高分呢做比较啊,十分以内A级,以此类推。啊,那这个怎么去做呢?这有个提示哈。那这个提示之前,你直接看这儿就行,哎,比如说我们这块呢,想保存学生成绩,你得先告诉我有几个。啊,这个比如说你输的是五是吧,这个有几个呢?主要原因是因为咱们数组,你要用数组装学生成绩的话呢,数组咱们说了。哎,不管你静态初始化还是动态初始化,一旦初始化了。长度就确定了是吧,所以你得先告诉我你放几个啊,哎,这呢,我们说哎放五个行,然后接下来的话呢,说请输入五个成绩。OK,你就这写写写写写写,你写了几个这块呢,就得调几次next int。
10:06
写完以后一回车啊,下边这块呢,就自动就出来了,说呢,你输入的这些成绩里边最高分是多少,然后呢,我还把每一个学生都便利一下他的成绩,这呢其实就便利数组了,同时呢,还把每一个学生这个成绩呢跟最高分之间差值来计算出来他们各自的等级。这个呢,比前面两道题就要难一些了。哎,这个怎么做呢。哎,你先想想,来咱们写一个他的。执行的一个思路啊。哎,没方法进来。首先,你说干什么?对,首先呢,我们得输入学生的人数是吧,呃,这个SC我就把它就先过掉了啊,我们直接说呢说呃,从键盘输入学生的。人数。啊,然后根据人数。
11:00
是不是创建数组啊。OK。诶,没问题,好数组呢,假设现在已经创建好了。或者换句话说,你说我们这个创建用静态初始化还是动态初始化呢?对,你得用动态初始化。对,这时候呢,这个数组的长度有了元素还没有呢,是吧,那下一步是干什么呢。呃,根据提示呢,从键盘输入成绩是吧,然后呢,将这个成绩呢保存在数组的元素中是吧。哎,根据提示。啊,这个。啊一四。来输入学生的这个成绩啊,并将成绩保存在数组元素中。OK啊,诶比如说你这写了个五,那这儿呢,其实我就得写一个循环,这个循环呢,恰好就是五次。然后呢,里边呢,呃,循环体你就得调next int就调五次。啊,这是这个好,那这个执行完以后的话呢,这个数组里边其实就存好这个数据了,下一步呢。
12:07
对,你得把这个数组里边这个最大值找到是吧,所以这个呢,我们称为呢叫获取。呃,学生成绩的这个最大值,或者就是最大最高成绩啊,哎,这个成绩呢,找到了。比如说89啊,然后呢。对,接着的话呢,我们要遍历数组的每一个元素。然后找到这个成绩跟最高分之间的一个差值,根据差值计算等级是吧。这上写一个变力数组元素啊这个。呃,根据这个元素,这个这个学生成绩是吧。与最高分的差值。嗯,根据学生成绩与最高分的差值来判,这个得到是吧,这个每个学生的等级。哎,当即,诶。
13:01
每个学生的等级。然后呢,并输出成绩和等级。哎,这个呢,你看我们得到它等级的时候呢,顺便呢,是不是就把这个,呃,这个输出的效果就也打印了是吧。OK,这呢,就是我们说的这样的几个步骤啊。哎,就写完了。来,咱们写一写啊。首先这块呢,提到了我们读学生的这个人数,包括呢成绩啊,都得用scanner了,所以我们这儿呢,首先啊,涉及到这个scanner的一个创建。诶,STEM点音。行,那我们通常呢,会给用户一个提示啊,说请输入学生人数。哎,冒号一下这个位置呢,我们直接在后边写了,就不加这个换行了,直接呢,我们调这个scan.next。哎,这呢,我们就得到一个具体的人数了,比如说叫count吧。好,那么接下来呢,针对这个人数呢,我们去创建一个数组了。
14:01
存成绩的成绩假设呢都是整数。印的吧。哎,这成立呢,我们叫scores啊,又一个因特型的数组长度为。Count。在这呢,第一步呢,就搞定了。啊,速度已经创建好了啊,诶创建好以后呢,接下来我们需要依次输入几个成绩哈,呃,那这块呢,你先来一个输出语句吧。对。就是我们这里边儿的说,请输入啊几个成绩。请输入这个呢,就是count吧啊。在个成绩。成绩好这个呢,我们就输入了啊,在这个输入的话呢,其实有五个肯定得用个循环了是吧?哎,那我就写个for了啊for这个位置写什么。去看的可以吧。还加一啊。不用加了啊,这是零零开始的是吧。
15:00
哎,或者这个位置我要不写看我写成。Scars。点length是不是也行?对,因为他们他也是count啊。哎,这个我之所以写零,是为了方便我掉这个角标了。那因为呢,我们接下来呢,首先哈,你先通过这个SC呢,要这个next in的方法,这不就获取一个成绩吗。获取这个成绩呢,我就不付给一个变量,我就直接扔到我们这个数组里了。Scars I。是不是直接就复制了。没问题是吧。好,那如果这个执行完以后呢,我们后边要想写个便利,其实这个成绩呢,就一定是都能存得上了。这呢循环五次,假如你写的是五哈,循环五次,这不就写五个,然后其实就都放在这里边了,这就有数据了啊。好,那么呃,在接下来的话呢,我们就有了数组元素了,我们取这个最大值,这个怎么做呀。
16:02
对,你看假设这个元素呢,就是这五个哈,你说这个怎么咱们就能把89给他拿出来了呢。是诶对得定义一个变量是吧。定一个变量,然后这个变量呢,我们就让他呢,存这个最大值先让它。认为是第一个元素是吧,或者说你说先让它是零也行。因为成绩不可能是负的了啊来先是零,然后呢,你发现这个零跟56就比56大是吧,所以56呢就放这儿了。然后呢,56再跟第二个比。呃,74打那74呢,再放到这儿。89 89也得放在这儿。然后接着呢,41 41比他小不用管,89跟他一样也不用管,诶最后呢,我们就每一个都便利一下,看看谁比他大。我就拿那个值再重新付给他是吧。对的,哎,所以这里我就写一个for循环了啊,特一个I等于零,I呢小于。哎,我们这个数组点Les是吧,I呢加加。
17:01
然后呢,我在外边儿呢,先提前定义好一个叫max。这个呢,比如我们就先是零了。行,然后呢,在这里边去做这个判断哈,说如果你发现这个max呢比,诶后边的这个元素呢小。那就说明人家这个数呢比他大呗,是吧,那我就对它呢进行重新赋值。哎,这样呢,来处理的。啊,那么经过这样一次,呃,都便利完以后呢,我说这里边儿就是存放的最大值。打印一下最高分是。哎,加上我们这个叫max这个。那就可以了。OK啊行,这里边儿有一个小细节啊,大家注意我这个位置写的零能理解吗?首先不写不行是吧。会这块的话呢,它会提示说你这个没有初始化嘛。在这是吧,呃,因为呢,你上来就拿它跟这个去比了,那你这个值是多少啊,哎,首先你得写一个啊,但问题是你写几呢。
18:03
嗯,对啊,呃,这块呢,其实要说的话呢,还有几个小点,这个咱们先看啊,呃,首先我写零呢,大家可能觉得是OK的,那我写100,你觉得对吗。不行,因为呢,这个成绩呢,假设满分就是100了,你要这写100呢,这块一圈走完之后呢,针对这道问题,那最大值乘100了。那肯定不行是吧,所以这块你要写的话呢,得写成。嗯,比较小的一个值是吧,那对于成绩来讲,咱们知道这个下界呢,就是零嘛。所以我就先写成个零了,但是这呢,主要还是依赖于这是一个实际问题啊,那如果说我们要是泛泛的说这有个数组没说是正的负的了。哎,我们现在定一个变量,取它的这个最大值。你就别写零了。万一这要全是负的呢?那怎么办?对,你可以呢,先把这里边儿随便你挑一个就行是吧,不妨我选第一个了啊把它呢,先认为是它的一个初始值是吧,然后你在便利的时候是从第二个开始。
19:00
对的啊,所以这个位置呢,大家也可以写成叫SCS0是吧。就是你可以这样写哈。我这写成零,然后这个呢,是不是就从后一个元素开始了。但是这个药没改呢。对,那就多比一次而已是吧,对啊,这块呢,就是一般的一种写法啊,你要针对这道实际问题呢,你可以写成零,这个细节大家注意一下啊。好,那这个完了以后呢,这个最高分得到了,然后接下来我们还要计算等级,这个咋弄。呃,你得首先等级之前呢,这不还有成绩嘛,这不是你得把每一个学生都得遍历一下嘛,所以又是遍利数组,所以我们很多这个开发中啊,一些算法操作啊,其实如果在数组这块呢,都是考虑是便利这个会频繁的使用啊。从角Y0开始,安那小于。scars.les是吧?然后I加加表示角标的。然后呢,我们要把每一个学生啊,这个students I score is,把他的成绩呢,拿到grade,意思关键现在这个grade。
20:05
哎,我们需要做判断了。这个判断逻辑呢,上面这块写的,诶在这呢。嗯。这儿啊。嗯,这个咱们这样啊。啊,它呢,CTRLC。嗯,粘到我们的这个里边啊。看这这呢提到一个等级的问题。嗯,看你跟最高分之间的一个差值。那我们就这样来了啊呃,差值呢,十分以内的啊,你按照他这个顺序来也行,比如这个叫SC。这个就是I了。如果呢,你是大于等于啊,这个max减去个十。那如果是是这个范围内的,那我们就打印你相应的是A级了是吧,那我就比如说直接这样写了哈,在这里边说这个a student空格。I是吧?空格score is。加上。
21:00
哎,四个20。哎。然后呢,再接着这个,你可以画上号啊这个。空格是吧,Grade is。再加上1A,不用在这写了。直接就是就是A了是吧。那就这样处理啊。好一会儿呢,我们看看这个代码还可以怎么去优化啊l if20分以内。这改成20。诶,这个呢,我们同样的还是这个代码,CTRLC粘过来,这就是B。然后呢,接着。这个是30分以内。这是C啊,后边呢,这个就是else了。这个呢,就是D档。就这样。诶,这个呢,整个这个呢就结束了,这个结束的话呢,其实整个我们这道题呢,基本上就收尾了,最后呢,别忘了。哎,干点close一下。是不是就结束了?哎,进入以后呢,如果你的代码写的格式要是不太整齐的话啊,比如说这个是长这样的,你这个ctrl alt加个L哈。
22:02
给你调格式的。嗯,行,来,咱们做一个测试,看看行不行。回过来啊,说请输入学生人数不妨呢,我们就拿他这个题面的这个呢,去做这个演示哈,写个五。哎,请输入五个成绩好56。74。29。41。89。好,最高分29,然后等级,诶你看跟这个是一样的。没啥问题啊,这个呢,写的是OK的。好,那么这道题的话呢,我们说呢,就可以这样呢,去做一个编写了。然后呢,诶这样写没问题,其实呢,这里边儿有一些小细节啊,咱们还可以做一些优化啊,诶所以呢,紧跟着的话呢,我就把这个优化的点给大家讲一讲。啊,一一这个我们还叫零三,这给我来个比如说叫。下个星期一吧。你看这样啊。好,我呢,把刚才咱们写的这个代码呢,原封不动的我还拿过来。CTRLC。
23:00
哎,我就还粘到这儿了。那么这里边儿哪些位置能做优化呢?看一看啊。嗯,这块造这个数组,诶负成绩这都是必要的步骤是吧。嗯,大家你看觉得哪块可以稍微的去优化优化。最大值。可以跟什么合在一起?上面。这上面合一起。嗯,现在呢,说我们在输入成绩的过程当中,我能不能顺便把最大成绩给记录了。其实是。可以的。是吧,其实可以的,就相当于你输入一个成绩,你看一下,诶我这有个变量啊,我来记住最高分的,你输入这个成绩来,我看诶你你跟我这个比一下,你大你大行,我就先把你存上,你又输入了一个,说你比我小,那我不管,你输一个又比我大,那我这块我就再改一下,将来你在输入的过程当中,是不是就顺便呢,把这个最高分就记住了。诶对,就这个思路啊,所以呢,这时候我们可以啊,把这个CTRLX咱们就往上提了,说请输入这个成绩啊,咱们或者在这儿吧,我们把这个呢就拿过来,但这时候的话呢,你这个scs I这个零,其实你也知道它其实是零吧。
24:10
啊,知道是零啊。啊,就是这时候呢,还没有赋值呢,所以它还是零,然后下边的这不又重新赋值了吗。对的啊,嗯,然后在这个for循环的里边,咱们就把这个逻辑CTRLC一下,我就放到这儿。把这个呢就删了,看看行不行。体会一下啊,首先呢,这个位置呢,这不是零吗。说请输入几个成绩,我们就放循环了,哎,上来呢,我们就输入这个成绩,比如说56这个呢,就把第一个元素呢给赋值了。然后我们又判断一下这个max这是零啊,它小于第一个元素56了,是不是就把56呢就给了他了。接着再给第二个,第二个的话呢,呃,进去之后呢,可能比第一个还高,那我们就接着呢去覆盖。哎,是不是可以啊。对,这样的话呢,我们就少写一次这个for循环了哈。
25:02
啊,这是一个事儿。啊,这呢确实优化了一下,然后呢,我说下边这块呢,也可以稍微的动一动。你看你这块呢,里边写的这个代码呢,是不是都差不多呀。这就有点冗余了啊。你要说唯一有区别呢?就是他吧。好,那既然它我就考虑说把这个呢,干脆定义成个变量这样的想法,你看我把这个呢,CTRLX啊,我想放到这儿。但放这儿的话呢,就是所有的这个都得执行,那就唯一有区别的不就是它吗?我把这个定义成个变量。这个变量呢,变量比如说我们能不能写在这儿呢。其实可以啊,我写个叉,我就叫他grid。哎,先是多少呢,我就先。先先先先,随便整一个吧。随便给了他一个直线啊好,然后呢,你如果是这样的情况呢,我们就把这个GR瑞复制为一个A。诶,这块呢。复制为一个弟妹。
26:01
哎,C。你看这个代码看着就很干净了。好,然后呢,在这块呢,我们再给它连接上一个grid是不是就可以了。没有问题。看着要稍微的好一点,你看我这是放在这儿了啊。放这儿行不?比如一开始零,然后进去呢,假设呢,第一个成绩呢,是A档啊,我把A打印出来了,然后接着加,加完以后呢,是不是你从这里边又。啊,又改了一下这个值是吧,哎,放这儿是可以的,你要放到这个这个位置呢。也行,但是没必要是吧。嗯,好。保存来,我们再去跑一遍啊,跑一遍呢,这个你还可以拿这个效果呢,我们再去看一下也行啊。啊,这有点成debug了啊,也没问题啊,咱们还没有讲debug,现在你也没加断点跟点那个run目前效果其实是一样啊。这个五。哎,56。
27:00
74。这个89。嗯,41,其实这个你也不用跟他一样,你随便来就行是吧。87。哎,这不这个对应的等级呢,我们就也计算出来了,最高分还是89。啊,没问题啊好,这个呢是可以的,最后呢,再说一个小细节,大家看啊,你说这个位置呢,我写的是等于零啊,我能不能把它去了。真可以。为什么可以?啊,因为我们前面讲,我说你这个定义变量了,你下边不是要用吗?用之前呢,一定要附上值,这怎么没赋值就不报错呢。诶,你在这块用了是吧,我说呀,你在这块用之前我一定会复制。哎,你这不是最起码有个else兜底的吗?但是呢,如果要这个位置我给注释掉了。他就不行了。因为你有可能就没复制。啊,这有个小细节,大家注意一下啊,你要是这个把不准的话呢,那你不行,你这块你就给他给一个值啊也行。
28:05
啊好,这呢,就是我们关于一位数组的课后的几道题目,哎,大家呢,哎,可以练一练一位数的知识点和他课后的练习。
我来说两句