00:00
好,那么关于啊if else呢,咱们就告一段落了,刚才呢,我们在做练习的时候呢,在这个问题当中提到过,说呢。诶这儿啊所在呢,从键盘输入三个整数,那下边的话呢,我们在讲这个Switch case之前呢,我们把这个需求呢做一下,这个需求呢,从我们这个课件里边呢,不是下边这块呢,啊这呢是为了课件的完整性呢,我还是写的Switch case啊大家往后找,在我们最后这块呢,有一个叫scanner。哎,在Java当中呢,我们使用scanner这个类实现呢,从键盘获取指定类型的数据。啊,那就涉及到了如何从键盘获取不同类型的变量呢?哎,我们使用scanner这个类,哎,下边呢,我们来讲一下这个类的一个使用,OK。好,那么回到咱们这个代码层面,新建一个Java文件,不妨呢,我就叫做scanner的一个测试了。这样子。哎,这样啊,好这呢,就我们一个需求使用scanner这个类。
01:01
啊,CTRLCCTRLCTRLV保存一下。行,那么主要呢,我们就是要熟悉一下如何去使用scanner来实现从键盘上获取不同类型的数据。啊,那就涉及到了我们使用scanner呢,实现获取数据的一个步骤啊。诶,不同类型数据的一个,诶步骤啊,这个步骤的话呢,我下边就来先写出来,然后呢,咱们去实操啊,这个步骤一呢,涉及到一个操作叫做导包。哎,导包呢,使用的这个指令呢,叫做import java.u.scanner。这块呢,大家还看不太懂啊,所以Java呢,你要说难呢,也是难在这儿了啊,一上来的话呢,我们就要用到一些,呃,后边才讲到的一些内容,那我们也不过多的去解释,大家你就先这样坐着。呃,到后边呢,我们就一解释就明明就能明白啊。然后这个步骤二的话呢,我们需要呢,就是叫提供啊,或者说呢,你叫创建也行。
02:05
哎,创建什么呀?哎,创建一个哎scanner类的一个实例,或者呢,也可以称为呢,就是造他的一个对象啊。然后哎,步骤三。那有了这个实力或者叫对象以后呢,我们就可以呢,调用它的方法了。哎,调用scanner类中的这个方法,获取指定类型的这个变量。哎,这呢,其实按说呢就完了是吧,哎直播呢,我们这时候呢通过呃。这个这个叫什么严谨性也好啊,或者说准确的讲呢,叫避免程序出现内存的泄露,诶这是我们又一次提到泄露这个词了,我们要最后有一个关闭资源的一个操作。啊,需要呢去调用。哎,Scanner这个类的close方法。哎,这呢,就我们这四个步骤。好,那下边的话呢,我们就通过具体的例子呢,给大家呢去演示哈,诶我们如何去使用这呢,咱们有一个题。
03:05
案例是吧?哎,这样啊。说小明呢,注册某交友网站。啊,正规的是吧,哎哎,要求录入呢,如下的个人的相关信息,哎,你的网名,哎,这就是字串,你的年龄。Int类型啊为代表的是整形啊,你的体重。Double浮点类型为代表的啊,然后呢,你是我单身。诶,布尔类型的是吧,哎,你的性别。叉类型是吧,诶那这块呢,涉及到的这几个呢,就把我们基本数据类型就涵盖了,加上我们常用的这个字串,诶这呢就都有了。行,那我们看看如何呢去实现啊行,那首先的话呢,这里提到呢,叫导包这样去写,把它呢,CTRLC放在哪呢,放在类的声明的上面。
04:00
哎,注意呢,后边还有个分号,这呢也算是一个执行语句了啊,那你说我放在这儿呢,还是说我放在。这儿呢?没区别是吧,呃,因为咱们编译以后呢,生成的四件码文件呢,里边本来也没有这些东西吗。啊嗯,这就看你个人的啊,我就放这儿吧,这是第一步。啊,那么稍微说一句哈,说为什么需要它呢?你看首先这是红色的,它是个类。说这是个类,这都是Java给我们提供现成的A撇啊,那为什么你这个类就需要呢,导一下包,这就不需要呢。你看不需要system,也不需要我们直接就用了啊,哎,主要原因呢,是因为他们所在的这个包啊不一样。哎,我看一下这个API啊。好,你看我这块写string写system的时候,你发现它在这个下。然后这个string呢。也在浪包下,这个浪呢,是language的缩写。你像Java的语言包,哎,这些包下呢,就是核心的一篇,或者换句话说我们常用的啊,所以说呢,常用的这些呢,就不用导了,那scanner呢。
05:08
虽然大家都是S辈的是吧。那不行啊,你是U下的,哎,你是在这个包下的,不是long包下的都得倒。哎,怎么导,就是我们刚才这个写法以后,我们才会细说,现在你就固定这样写就行啊好,我导进来了,哎导进来以后的话呢,我下边就可以去用了哈,那用的话呢,就是我们说的这个第二步,所以呢,就要提供一个scanner类的一个实例。哎,这个咱们一边说呢,我还这样一下啊。哎,这么着一下,然后第二步。提供他的一个实例,这个操作的话呢,大家也看作是一个固定的格式就行。哎哎,那么这呢是一个变量名,下边呢是一个变量啊,这个变量的类型后边是个变量名,这个名的话呢,这不标识符嘛。
06:00
这你自己想咋起就咋起了。啊,但是你最好呢,是不是叫剑明之翼是吧。好来注意啊,这叫变量的类型,这叫变量名,这叫变量值,因为它是一个类,所以呢,跟咱们写个int一个I等于几不太一样了。这就是我们后边讲的这个对象创建的时候呢,是这样的一种格式,它呢只不过有个参数而已,这个大家你也先不用过多的去问为什么你不行,你就把它那CTRLC每次都粘过来也行啊。啊,就跟没方法一样,先不用过多研究,好第二步,好第三步。我们就可以呢,去调用scanner这个类里边呢,提供的一些方法。哎,帮我们呢,去获取相应的一些数据啊,从哪获取呢?从控制台去获取了。哎,那么我们再回过来看这个API scanner这个类往下走啊,他写了很多这个文字啊,我们就不看了,呃,直接呢,就找它下边的这些方法。这就是每一个方法,其实代表的就是一个具体的功能。
07:00
啊,比如大家在家里边,你看你洗衣机啊,洗衣机不是都有好多按钮嘛,每个按钮呢,你点一下它就会执行相应的操作,每点一个按钮,你就相当于理解成我们这个Java层面的,就一个方法执行了。其他的语言当中呢,经常叫函数。好了,那我们想去获取很多种类型的变量啊,那么方法在这里边儿呢,都是一系列的next的方法。啊,一系列的next方法,如果呢,我们想获取字符串。哎,你这块你就看看哪个前面写的是字符串。其实你看有好多啊,哎,你要说比较长的话呢,一个是它。对,这个next啊,还有一个呢,叫next。看这两个算比较常用,而且稍微有点区别,也区别是咱们后边呢,遇到的时候再说啊好这两个是行的,然后呢,你想获取一个整形。啊,Next bit。Next in。呃,Next shot。Next long,你看是不是就全了?啊,然后还有其他的啊,Next float next double,哎,值不值是吧?诶,所以呢,我们要的这类型就有好,那咱们呢,就通过这个题目呢来去体现啊说请输入你的网名啊,那咱们下边就开始来写了啊。
08:12
这个获取这呢,其实就调方法,但是调方法的话呢,诶你看我先整一个哈。注意,这时候我们是拿着这个对象来调的。这个对象你看我跟那个类名啊,特别像,有的同学可能就整懵了啊,我特意呢,我写成不一样吧。我特意写的不一样啊,好,我用它来调调呢,比如说我们先要输入一个姓名吧,我就用这个next方法了,调完它以后呢,我们就接收为一个string型的一个名字。哎,就这样就行。啊,这样就行好,那接收完以后呢,我们不妨呢,先输出一下啊。哎,这个我们就直接打印叫。Name。哎,等于。诶保存一下是吧,好,那这个呢,我们就写完了啊,写完以后的话呢,回过来你看我这块呢,做一个测试啊Java c。
09:05
哎,Scanner的一个测试点,Java好回车。那编译通过了,如果你要忘了写这个in的话呢,就报错了。好,Java。Scanner一个test好回车。诶,大家你看啊,现在呢,在这光标闪呢。这个程序呢,也没有停止。然后似乎呢在等什么是吧,哎这块其实就在等我们去做输入,因为你也没有看到这个输入语句,所以这个方法呢,哎,要起个名呢,这叫什么阻侧式的方法啊。什么叫阻塞式呢?就是他这块等着你下边这个语句执行不了。只有你这块写个东西才行,比如说写个叫Tom。托尼吧。托尼老师是吧,好,我写了写完以后呢,我一回车,你看我这个写完以后呢,他就直接把这个结果呢,通过这个方法,哎的方式呢,就付给了这个name的变量。那你内等于谁?这不就是托尼吗?
10:01
哎,就是这个思路。哎,就是这样啊,但是你看这块呢,他在这等也没给我们一个提示,感觉差点意思是吧,所以呢,我们通常呢,在调取相应的这个方法获取数据的时候呢,提前你先给一个提示是吧。我们就可以来写一个,哎,输出了。哎,对,在这儿啊说哎请。哎,输入你的这个网名是吧。诶冒号一下,哎,我们这儿有个换行,那就意味着他在下一行去输入,你要说诶就直接在后边输入得了,你就把换行去了也行。啊,那上面再再来一个,比如说我们再整一个。CTRLC啊。啊,你这不是登录一个网站吗。啊,欢迎。哎,光临。啊,这个哎,你来我往,哎交友网是吧。
11:00
感觉就像是一个正规的网站是吧。诶,然后请输入你的网名,诶这块呢,你只要有提示了,诶我就开始在这输入,输入完以后呢,你可能也不着急让用户呢去打印这个信息,先不管它啊,这个呢,我们是获取的是一个字符串啊。这就完事了。嗯,这是算步骤三嘛,然后接下来,嗯,还得啊好几个星期呢。啊,一个个来啊。嗯,输入你的年龄。嗯,在这儿啊,这个呢,你要上边这块呢,没有加换行,这个呢你就可以就都去了得了。形输入你的年龄啊好,那这时候呢,年龄是一个整形了,刚才我们看到整形那四个呢,Next叉叉叉全都有,那咱们就习惯上还是用这个int了,是吧。哎,Sc in前面接收一下啊,一个age。哎,这就接收到了。诶,所以这块我们去调用它的方法的时候呢,大家会发现啊,典型的咱们调用的呢,都是叫ne叉叉叉,诶这样的这个方法。
12:08
好,这个呢,我们就搞定了,我就不一个个去测了啊,一个个往下去走,嗯,请输入你的体重。哎,在这儿啊,你的。体重啊,这个呢,我们还是通过这个干点调这个next,注意啊,这块我们调的话呢,不是你自己想当然,你想怎么写怎么写,主要取决这个API里边得有这个支持啊。Double。哎,咱用double吧。哎,那这样一调double型的变量接收。哎,体重好,这就获取了,然后接下来啊,你是否单身。CTRLC。哎,这个,哎,你是否单身啊,这块呢,我们给他一个提示吧。
13:01
这个呢,是单身冒号叫处啊。这个不单身。啊,叫false啊,说不单身来这干嘛?这是正规的交友网站,没说不让是吧?嗯。哎,来这块我们就用一个布尔类型来接收啊,布尔类型来接收能不能行,你回来看一下啊。得有一个next领是吧。哎,其实我也不忍心,哎,可以啊,可以那就行。哎,干第2NEXT。好,接收为一个word类型is single是吧?哎,Single单身的意思。哎,完事了啊,这个就搞定了,下一个说你的性别。哎,在这啊。行。输入你的姓。别啊,这个性别的话呢,你就给他提示男。儿女。呃,咱们就给俩选项吧。
14:02
啊。对,咱们国内的话呢,你要说这一点上好像不是那么。人性化是吧。这个你只能二选一哈,诶我记得国外的是是Facebook还是哪儿这个注册的时候呢。特别多的选项是吧。啊,比如说呃,你是呃物理上是个男性的是吧,但你心理上认为你是一个男性的啊,这是一个啊,你是物理上是个男性的,你认为你是个女性的,有选项等等等等等等是吧。特别的人性化是吧,嗯。好,哎,这个咱就二选一了啊哎,那这呢显然是一个差啊,那能不能用呢?哎,你得回来看一下啊next咱们这个排序是有顺序的啊。你看next b b,这个next直接D了,是不是没有next c开头的。啊,你说诶,那有可能是人家不叫叉啊,那行,你看一下左边这块有没有返回是差的。
15:01
很遗憾没有。没有没有没有没有没有是吧,诶所以呢,你就不能够去贸然去调这个ne叉了哈。那我就想接收为是一个叉,我这个真的都已经准备好了。是吧,那怎么办?对啊,这时候我们只能这样去处理了,SC呢,先叫next方法,就是你写的是个难。啊,或者你写了个难123是吧,诶不管你写的什么,我都认为你是个字符串,然后呢,字符串呢,我只取你第一个位置上的。哎,这个字符,哎,所以呢,这个叫叉AT0呢,就是第一个位置的意思,第一个位置是零啊。哎,这个注意一下,所以呢,我们得调一下这个方法,这个方法我就不看了啊,String里边有这个方法,好这就完事了。哎,那么这几个信息呢,咱们就获取到了,尤其这块要小心一点,我在这儿写个说明啊。三啊,这个scanner这个类中。
16:00
哎,提供了,哎获取这个我们说叫我就写全吧,Be short in。嗯,浪。Double。不令。啊,还有这个是吧。啊,类型变量的。哎,方法啊,注意。哎,没有提供。哎,获取叉类型。哎,变量的这个哎方法需要呢,诶使用哎这个next方法之后呢,你再去调一下这个叫叉at是吧?哎,你可以呢,获取零这个位置上的元素,那就是个差啊。好,嗯,这个需要使用这个scanner类调用,哎,这我我我就直接这样得了。行能理解这意思啊啊,那这个完事以后呢,我们把这个信息呢,就。哎,给他输出一下。
17:02
哎,在这啊。行,这个呢,我们说,诶网名为。网名冒号吧。哎,加上一个name。逗号这个年龄。根号。这个体重。啊啊。这个是否单身?Is single。呃,建议这个位置呢,大家你在写这变量的时候,你就别自己发挥了,你直接这块CTRLC粘一下也行啊,这样防止你出错,哎,然后呢,这个我们画下行。嗯,在双引号逗号。这个性别。啊,然后呢,再加上一个叫gender。CTRLCCTRLV好这个呢,我们就把它呢就完事了啊,下边你再说一句啊,注册完毕。
18:11
哎,注册完成啊,这个,哎,欢迎啊,这个继续进入啊,体验是吧。哎,这就可以了啊。行,那这个成语呢,写完了,注意还差一个啊。我们的功能写完了,但是从这个SC使用上来讲呢,还有个第四步。假设这第四步呢,忘了。汪老师一下。看看会不会报错。首先编译。诶报错了是吧,这个是非法的转移字符,43行,43行我这儿咋整错了呢。非法的啊,看这啊。是吧,诶咱们这讲这个转移字符的话呢,讲过这个叫杠T是吧,讲杠N啊这呢有特殊的意思,哎,那我现在呢,我就想哎,它这个会把它当成是个转移了,它没有没有这个叫杠女这个转移字符是吧,那我就想让它输出是个杠。
19:06
哎,我就再来个杠就行。哎,那你不是想转移吗?我我也是转移,我把你给转移了,你就是杠。是吧,哎,你不是转移字符,那就啊来。哎,编译。呃,运行哎,欢迎光临啊,你来往我啊交易网站,哎,网名啊,托尼老师啊。啊,年龄啊,这个24岁啊体重。这个标准的多少,135吧,嗯,点五是吧,这个是否单身啊处。这个性别很难。哎,这个忘,诶这个冒号我给加到这儿了哈,你可以给大家加到这。难哎,这我要写个拿123可以不?可以啊,因为咱们接收的是个字符串是吧,只不过我再取的话呢,是取了个难啊。对,然后回车一下。哎,这边就给我们打印出来了啊,这个位置呢,只取了个南,诶这个就完事了。
20:01
好,然后这个程序呢,就结束了。那你会发现呢,我们这时候也没有去写这个第四步,发现你看也没事儿哈,这个怎么来理解。对,就相当于呢,我们其实正常来讲呢,我们造完一个对象之后呢,这个对象出了这个方法之后哈,就跟我们定义变量一样,它就失效了。呃,按说呢,就是这个死干这样一个对象呢,他也就呃被垃圾回收器给回收掉了,但是啊,这个对象呢,有点特别,因为呢,它需要从这个控制台呢来获取数据啊,需要呢,跟我们另外的一个场景呢,去做这个数据的一个交互,这种情况下呢,这个G啊,就我们说的garage collector叫垃圾回收器哈,它呢是不能够有效做回收的,说白了啊,它就不认为这是个垃圾了。也就是我们前面讲的那个内存泄露的例子啊,内存泄露咱们前面也提到过,它是不会给你展示出来的。你说你看我这写完了挺好是吧,实际上呢,它有一个泄露这种情况呢,也不多,也没报报内存溢出,所以你感受不到,但是你要记着点啊,给它写上啊。
21:09
就是这样,怎么做呢?很简单,你就拿着这个scan呢,调一个close就行了。诶,我就不再去做这个演示了啊,哎,这个你把它加上就行,上面这个位置呢,稍微的动一下,哎,把它加到这儿吧,行这呢就是我们说的这个scanner的一个使用,通过这个例子呢,大家体会一下,我们获取不同类型的这个。变量啊,然后这个完了以后呢,你再回过来,比如说我现在想从键盘获取三个变量,那你就调三次net就行,对吧。那么要注意的点就是,我需要造三个scanner对象吗?不用一个就够,那咱们刚才不也就造了一个吗。哎,就造一个对象,哎,然后呢,多次调方法就行。OK。好,那么关于这个scanner这个类呢,我们就诶告一段落了,然后课后这块呢,有一个练习题,这个练习题的话呢,诶大家作为一个课后的作业来做吧。
22:03
我把这道题呢剖析一下。啊,我把这道题呢,剖析一下,看一下啊看一下啊,说大家都知道啊,男大当婚,女大当嫁,那么女方家长呢,嫁女儿时提出一定的条件啊,身高财富和帅与否,就是高富帅是吧。说如果呢,这三个条件呢,都满足呢,说我一定要嫁给他。啊,如果呢,这三个条件啊,有为真的就只要有一个是出就行啊,那就嫁吧,比上不足,比下有余。哎,如果三个都不满足啊,就不加了。啊,就这样个场景。啊,今天早上我还收到这个头条这个打开新闻看。不知道为啥给我推这样消息啊,呃,上下有两条说,一个是40多岁了就自己呃,自己住特别好,一个30多岁了就自己住就挺好。我感觉不应该给我推是吧,啊对现在的话呢,你看咱们国家这个以为说放开二胎,大家能猛生是吧。结果发现呢,是真不生啊,然后三台也给放开了,诶大家可能觉得说,诶是不是后边还有一些更好的政策等等吧,是吧。
23:06
哎,可能还真的是不爱生哈。不知道这个一方面是大城市的压力大,另外呢。我感觉是不是跟这个儒家的文化也有关系呢?你看周边的都不生是吧。嗯,韩国也不生,日本也不生是吧,但是你看美国是发达国家,美国呢,经常你看那明星一生生好多是吧。可能也国家养,但日本好像国家也养,但就不生。是吧,有有有点那个那个啥哈。嗯,主要是以前的时候,为什么说一定要结合成家庭呢?因为你单独的一个人呢,没法在社会上生存下来。你得有一个呃集体是吧,或者以前呢,还讲家族哈,对你才能够生活的很好啊,那最基本的一个家庭是个基本单位,那你看现在呢,这种发展程度,你自己一个人呢,你也可以活得很好,甚至说呢,可以更好是吧。啊。你是吧,你要是结婚就买房子啊,你可能把你整个家的这个所有的财产都得压进去是吧,养一个孩子的话呢,花的钱也很多啊。
24:09
诶,你发现自己一个人也挺乐呵的啊,回头躺着呢,每天刷刷抖音啊,沉浸在自我的这个陶醉当中是吧?OK啊。行,这个拉回来啊,那么我们这块呢,看怎么去做这道题,诶这呢,提到这个条件,身高啊,身高这块呢,我们输入的数据,哎可以呢,理解成是整形的,所以你可以用整形来接收财富的话呢,比如说诶呃,单位呢,你可以是千万,那你可以是比如说一点几啊二点几啊,这个呢用double型的来接收。哎,说这个帅不帅呢,呃,True或者false,那我们可以呢,呃,使用的叫布尔类型来接收。呃,先别管下边这个啊,诶那么我们就可以从诶键盘上呢,按照这个scner这个方法呢,获取不同类型的这个实际的值了,诶这个值一旦获取到以后呢,呃下边这个事儿呢,其实就都比较清楚了,哎上边这不就获取是吧,身高财富诶帅不帅诶一旦获取到以后,你下边就判断啊,如果身高呢,是大于等于180的,并且呢,这个财富呢,是大于等于呃1000万以上的。
25:12
哎,单位因为是千万嘛,哎,然后呢,哎是不是帅哎负啊哎如果这三个都满足。就嫁啊,一定嫁啊,如果呢,呃,只要有一个满足,就改成货就行,就这样,否则就不嫁。哎,这个比较清楚是吧。诶主要呢,还是大家得下来写一写才行啊,那这道问题呢,其实呃,想给大家呢,通过这道题说明的另外一个点是什么呢?呃,就是我们也可以考虑用字符串来接收。你看我这呢,就是这样来做的,这是这道题的一个点哈,说帅否?哎,是或者否写的是字符串。哎,那我们就得用next in按这个next这个方法来收了。那接收完以后的话呢,你注意这时候呢,拿到的是一个字符串。我们就剖析一下,你看这啊。
26:02
没问题吧?诶,拿到的是个字符串。那么是字符串的话呢,关键就是这个位置该怎么写。对吧,诶说身高大于等于180,财富呢大于等于1000万,诶帅不帅呢?如果你写的是个是哎,那就意味着他是个是,怎么去表明他是个市。可能我们会这样想,他呢,是是。是吧?诶会这样去写,然后下边呢,也是啊这样去写,哎,大家注意这样写的话呢。呃,你发现呢,就不好使了哈。哎,就不报错老师,哎这样写的话呢,它会出问题啊。对,我这样干说的话,还不如咱们就来测试一下呢。嗯,这个呢,是关于scanner的一个练习,哎,我把它拿过来咱们说一下啊。CTRLCCTRLSCTRLV保存。呃,因为这个核心逻辑呢,咱们也都还算比较清晰啊,我就直接粘过来了,CTRLC。
27:07
啊把这个呢,其他的这个呢,我就先删了啊。嗯。好,前面这个呢,你的身高和这个财富呢,呃,用这两个去接收这个呢,大家诶没有问题啊,这个我前面丢了一个import是吧。哎,Scanner啊行,然后呢,是否帅呢,我用string来接收,这我就接收了,然后接着去做判断,现在判断呢,我是这样写的。关闭这个题是完整的,对吧。啊,下边我来运行了啊。RC。好,编译过了。好,徐行啊说请输入你的身高,嗯,这个呢,我让他的身高呢是满足的哈,诶190是吧。呃,财富呢,这个,呃,这个十千万就一个亿是吧。嗯,然后再来帅与否是。
28:02
呃,按说的话呢,他应该是一定要嫁给他,但是你这块你看我一执行。他输入的是这个啊。来说呢,价把比上不足,比下有余,那不太对啊,那要是输入这个输出的是这个呢,就意味着这里边儿肯定有是false的情况是吧。这个满足了,这个满足了是因为这个没满足。哎,也就是说呢,如果要用字符串,你判断呢,跟这个是不是一样的,不要用这个符号了。啊,这个呢,我们得给它改成是用这个啊。这个我们后边的时候呢再说。对,叫equals,翻译过来呢,就是相等的意思。再来。编译运行身高190财富呢,哎,这还是十啊,这个呢是一个是你看一回车,哎这呢就对了啊。哎,稍微解释一下什么意思呢,就这个等号的话呢,在字符串这块呢,它表示的,比如说你这是个是。嗯,然后你现在呢,就是人家这是个是个市是吧,你自己呢也写了一个市。
29:03
啊,这个equals呢,就是判断说你这俩的内容是不是一样。而这个等等呢,它是判断你俩呢是不是一个。因为在内存当中呢,我们不是放了一个是就判断你这俩是是不是同一个东西。那不是同一个东西啊,只不过呢是俩东西,它俩的内容一样而已,所以呢,我们用的是equals啊。以后呢,我们还会再去讲这块呢,诶当成个小知识点呢,抛出来大家了解一下就行了。啊,这就我们说的这道问题,OK,哎,下来呢,大家可以把这道题呢也写一写。
我来说两句