00:01
第二题。嗯,这个题目是这样子的,说呢,从键盘读入学生的成绩,找出最高分,并输出学生成绩的等级。这块等级呢,还有这样一个要求,就是你跟最高分之间的差值啊,是十分以内的呢,就是A啊,20分以内就是B啊CD。怕你这块看不清楚,这块还举了个例子啊,就是当我们把这个程序运行起来以后,首先说请输入学生人数。Scanner啊,这是用啊,我们写了个五。这个五呢。实际上是不是就作为我们这个数组的长度了?对,你写个五,紧接着你就造个数组,长度是五。那好了,我们现在照这个速度,你说是用动态初始化还是静态初始化?对动态的,因为你这时候呢,还没办法把成绩附上啊。那造好这个数组以后,下面的话呢,我们写一个循环。这个循环呢,让用户把这五个成绩呢,一个一个的录进去,就是五个next int。
01:05
哎,给我们这个数组赋值。敷完水以后下边。我们呢,有个最高分。那数字元素都有了,最高分自然而然的也能算出来。然后接着呢,你就看一下这个每一个学生成绩跟最高分的一个差值,哎,然后呢,来考察一下他的这个等级。就是这样一个题目啊。那这个题目的话呢,咱们先简单的给他写一下这个过程。就是这个流程啊。我先写着流程,然后大家呢。大家去写这个题。好,没方法,Alt斜杠。咱们刚才呢,也大概说了一下这样的一个执行的一个情况啊,咱们第一步需要做的是什么。
02:05
呃,这个相当于是scanner的一个使用是吧。哎,这个我们相当于是使用scanner。然后呢,读取学生个数。数据学生个数,这个我就哎这样来写,这是第一步啊。嗯,读个学生个数,这边就把这个个数就读了,然后下一步呢,我是不是根据读取的学生个数来创建一个数组啊。创建数组。啊,这个数组呢,来存储学生成绩的啊。哎,这个咱们刚才说了,应该用这个叫动态初始化啊。好,大家呢,去想该怎么写。行数组呢,造好了。下一步是什么?数度造好了下一步。哎,我们是不是电离这个数组,然后依次呢,是不是给每个数组的元素赋值啊。
03:05
给。数组的数组中的这个元素。相当于呢,就是你把这个你控制台呢,你去输入每一个学生的这个成绩啊,给他输到咱们这个数组当中。好,负上值了,下一步是什么?这时候每一个学生成绩是不是都放在这个数组里了?下一步该干嘛了?是不是要求出这个数组元素中的最大值啊?获取。速度中的元素的最大值。这个就是我们所谓的最高分。啊,这个就是最高分。行,那最高分呢,拿到了。下边该干嘛了?下边对下边呢,咱们就相当于是便利你把每一个呃学生的这个成绩的输出出来,但同时要求还得把这个等级也得输出出来。
04:05
那这呢,依据的就是这个关系啊说。判断。或者叫根据啊,每个学生成绩与最高分的差值。差值我们得到啊,每个学生的等级。哎,然后呢,并输出等级和成绩。这就是咱们这个第五步啊,这个出来这个等级和成绩呢,这道题呢就结束了。哎,相当于我这呢,给大家把这个过程呢写了写啊,然后呢,大家呢,做一下这道题。哎,刚才呢,大家也写了,写这道题了,我们一块儿呢来做一下,这呢是咱们写的这个提示,就后边呢,大家做一个大的一个问题的话呢,你也可以先想想这个思路是什么,就往往呢,可能刚开始的时候呢,这个思路不容易捋清楚。
05:02
呃,思路捋清了以后呢,每一步呢,都化解为一个最基本的操作啊,接下来呢,去实现就行啊好,首先呢,我们说使用这个scanner呢,来读取学生个数,那我们这儿呢,需要去导包,诶这块其实写的时候呢,咱们不在ID的plus中了,在ecl当中,这时候呢,咱们就可以直接来写这个scanner。啊,你看啥意思啊。我这呢,又一个scanner。哎,然后这呢,写一个system叫in。好洗完以后呢,这时候需要我们导包,否则的话呢,这块就报错了,你可以呢,把光标放在这儿呢,直接点一下。这就导进来了。就写到这了,或者呢,还可以有这个快捷键啊,你看这时候报错啊,我们呢叫ctrl shift o。直接呢就导进来了。你可能觉得这好复杂,它CTRL是三个键呢,但你想象一下,如果你这个代码里边有很多个都需要你去导,那你要是光标一个一个去点,那多费时间,我就ctrl o一下,全部就倒过来了。哎,这个呢,就直接的就填上了啊。
06:02
行,接下来的话呢,我们这个根据这块的一个提示哈,说请输入学生人数,我们呢接着输了一个五,所以我们这儿呢,也是先sit out一下说请。输入学生人数。哎,我们接下来去输入我此时的光标呢,是在这儿呢,我要是点一下回车。啊啊,现在它有一个这个识别的那个啊,还还回来光标在这儿呢,我要点燃回车,是不是就成这种情况了,你看。或者说你要没看有的时候会出现这种是不是就给你截断了。但是我光标在这儿,我希望呢,换到下一行,大家呢,可能会这样做哈,把光标呢先放到这儿,然后呢,诶一回车啊点个上。感觉有点慢。哎,我们这儿呢,其实也有快捷键啊,就是光标你在上面的任何一个位置,我按住shift的点回车呢,就跑到下一行了。呃,你要在这儿我点住呢,Ctrl shift加回车,就在上面给我们再创建一行。CTRLD删掉是吧。
07:01
哎,这个呢,我们就在这儿写,请输入学生人数scanner.next int。啊,光标在这儿。Ctrl e一下一回车,直接呢,我们造一个数组。啊,这个呢,我们叫一个。Number吧。这是学生人数嘛。哎,不是不是造个数组了啊,先获取一下其中人数啊。那获取学生人数以后,下边呢,呃,根据呢,我们读的这个学生的个数呢,去创建一个数组,这是我们第二步要做的,咱们呢,去造一个int型的数组,就是int呢,是存储学生成绩啊用的int。等于new,一个int型的数组,我们说呢叫动态初始化。把这个放进来。对吧。诶好了,下一步呢,我们需要给这个数组的元素去赋值了,那我这儿呢,一共是输入了number这个元素,我得给number都去赋值,那自然而然的我们写个for。Int I等于零,I呢小于。
08:01
Scars。点。但是爱佳家。在这里边的话呢,我们提示说请输入五个成绩,这个就没必要写在for里边了,我们在这儿。写一个set out。说请输入。手手婚还有手婚如云啊,请输入啊这个number。各学生成绩。那下边呢,你就去输入了,咱们呢,这块就给大家去读到咱们的这个数组的指定元素上啊,哎,这个叫scores,写个I给每一个元素去赋值,怎么写呢。怎么写?Scanner点。耐呗。这不,我们又相当于从键盘去读值了,读一个值负一个值,读一个值负一个值,哎,你有几个元素,我就负几个值。
09:03
哎,这样的话呢,我们就给数组元素附上值了。可以吧,嗯。哎,下一步说获取数组中的元素的最大值,就最高分。啊,这个也是我们数组中常见的一个操作啊,对于这种数值型的数组的来讲,我们常常的去求一下它的最大值啊,最小值啊,啊这个平均值啊,总和呀,哎这样的一些操作,这儿呢是求这个最高分。那怎么求啊?对,虽然咱没有做过,但是咱们前面讲过,我写一个for循环变利100以内的偶数,求一下这个偶数的和咱们当时不也是得定一个变量吗?哎,所以这呢都是类似的一些经验啊,我呢先定一个max score。啊,这个最高分呢,咱们假设先是一个零分啊,然后我写一个负循环啊,Int一个我们是不是从前往后都遍历一遍呀。
10:00
对的0I小于。对,scores.length I加加。诶,电力每一个学生成绩,看看哪个成绩呢,是不是比我们这个max score呢还大。哎。I啊,就是你呢,比我这个max还大,还大的话呢,我是不是就拿你去重复一下值啊。这不就是我们来计算最高分的一个方式吗?注意这个时候呢,我写的是零是可以的哈,咱们这个成绩呢,大家都知道最低最低是零分了。哎,所以我这拿的是一个零,先充当一下啊,有的同学呢,也可以先把第一项当成是一个最高分,然后呢,这块呢,就从。第二项开始是吧,就I等于一的时候开始去往后变那些氢。好,这样的话呢,我们这个最高分呢,就获取到了。哎,接着呢,开始第五个。
11:00
我们呢,去计算一下每个学生的成绩和最高分的一个差值,这个差值呢,按照这样的一个关系呢,去获取每个人的等级。啊,每个人的一个等级。那又得便利。超循环。I等于零,I小于。哎,杠点LS,哎加价。遍历数组中的每个元素。接下来我们需要判断每个元素跟最高分的一个差值,说如果呢,这个诶max这个score它呢,减去咱们的叫scores I。就减去以后呢,如果你是在十分以内的。啊,这个呢,就是一个A等级的。啊,就这种啊,嗯,他这个意思呢,这个我我给他翻过来了,把这个放到这儿,这个是放过去了啊呃,你要是按照这种写法也可以啊。嗯,十份以内的话呢,是A等级,然后BCD啊,你这块直接输出也行,或者怎么办呢。
12:03
对,我可以定一个变量。嗯,这个变量,这个变量呢,我写到这吧,差类型的我叫做level。啊写level,注意我这时候没有赋值啊。我这有个level,然后呢,如果你是十份以内,我给这个level。负一个值是A。A等级的啊,接着L。这20分以内,这就咱们这个范围小的写上边这个呢,范围大的呢,就往下边一点去写。Level。B量级。If。这是30的。C等级。剩下的。哎,第等级。哎,这不就是这样的情况吗?那abcd好,这四个等级,等级有了以后啊,紧接着我们在这个位置,咱们把当年这个学生的这个情况呢,你得输出一下啊。
13:06
他是这样写的,说,Student,谁,Score is grade is。这就得拼这个串了啊,Student。嗯,有中括号吗?没有空格一下。加上爱。然后score is。哎,加上我们的这个scores,哎,他的成绩啊。然后再。逗号,Grade。Is。加上我们的这个level。好,这个要太长了,你这块呢,这换一下行。诶,左边看不着了。这样一下,或者你要这样双击一下这个位置。这就变得更大了,也可以啊。这不我们就基本上就搞定了,就。
14:02
诶,这个这个这个差型的一个level啊,我们写到外边了,这个还用涉及到之前说过的什么重新赋值啊啥的吗。不用哈,因为这块每次一进来不都会进去这里边儿的某一个是吧。而且你会发现啊,我这个写了个叉,我这没有负过值。然后呢,我在这块相当于直接用了,也没有报错。就是因为我们呢,是不是一定会走这里边儿的多选一啊。对,只要你走过其中的某一个哈,它一定会负过值,所以这块呢,不会出现说叫未被初始化啊这样的一这个这个编译错误了啊。那咱们跑一下啊。哎,这个跑的话呢,咱们可以就参照着这个来写也行。哎,参照着他来啊。是输入学生人数五。请输五个学生成绩,这个时候有光标在这儿,大家别在这儿写哈,这个你把这个光标呢,再给它显示的写到下边。这个是因为这个console它没有那么智能啊,咱们真正要是开发当中,肯定你不是浏览器呢,那就是用户的客户端啊,那个呢就是前端的问题了,这呢只是一个模拟,所以光标有时候在这儿你把它掉下来啊。
15:09
五个学生成绩,这个我们就按照这里边儿给的这个例子来啊,56 74 89。41。29好,回车一下。那这里边呢,这个等级就出来了啊d bad bada啊乘绩这样好。没有问题。哎,这个题的话呢,我们就这样来做就可以了。那这个题大家还有没有没有什么问题啊。没有是吧。啊,那这里边儿呢,其实有一个小点可以稍微优化一下啊,就是关于这个最高分的。诶大家看,其实我们现在写这个这个这个题目的时候啊,第三步呢,赋值写过一个负循环变了数组,第四步呢又变了一遍数组,第五个呢,这个求等级的时候又变了一遍数组,啊其实有三遍变例啊呃,其实呢,我们这个第二遍就是你求最高分的时候,我说呀,呃,用不着呃再整的这么复杂了。
16:11
怎么着啊?对,我们在你这个给每个元素赋值的时候呢,我就可以把这个成绩呢,就算出来。那我把这个分呢,先呃变量你先定义到这也行啊,我们在这求最高分的时候,我就直接在这里面把这个逻辑呢粘过来。大家看看能不能看得懂。相当于呢,就是我们呢,这块呢,是通过便利的方式呢,去给每一个元素去赋值了。诶,我们负一个值,你把你当前刚负的这个值呢,诶你跟我们这个max你比一下看看,如果你要刚负这个大,那你就是我拿你付过来。相当于是在我们给每个元素赋值的同时,顺便呢,把这个最高分其实就已经获取到了。
17:01
想想是吧。是不是不用说,非得说都复完职以后再去这个。单独的获取一遍是吧。哎,直接在这里边就可以啊。哎,这个效果的话呢,其实大家也可以再演示一下,比如我们这个再跑一下。啊是没问题的啊,还是五个人这个成绩呢,我们就临时的去输入一些了。哎,这不就是这个等级的一个情况。哎,也是可以的啊。行,那可能还有有同学想,诶,那这个要不也省啊,把这个逻辑一下也给他搬进去得了。这个还能办吗?这个千万不能办,为什么?对对啊,是这个问题,就最大值呢,你没有最后一个数的话呢,你根本就不知道谁是最大的,你不能在这个最大值还是一个临时的一个最大的过程当中,你算等级那是不对的啊,所以这个呢,不能再往里边塞了。这个我们停一下。
我来说两句