Scanner(基础8)

Scanner

Scanner是个工具,是用来扫描我们用户输入数据的类.

 

 

 

Scanner是个工具,是用来扫描我们用户输入数据的类.创建一个扫描器的对象,用他来接收键盘数据,而这个新Scanner对象的名字叫scanner.

这一步是用来判断还有没有输入的的数据,循环要用到,如果是其他可以省略.

而scanner是用nextline方法接收的,接收了之后赋值给字符串sty.

如果你用next()方法来接收数据的话,它在有遇到第一个字符串后面的空白时他就会停止接收数据,我们不能用空格分开两个不同的字符串只能连着,所以这个方法我们不常用.

而nextLine()方法是以Enter为结束符,你不按回车是不会结束的,可以获得空白,所以我们常用这个方法.

Scanner的进阶使用

要求输入数据的和,平均数.

创建一个扫描器对象scanner,用来接收键盘数据。输出引导语句(“请输入整数”);创建一个double类型变量a,int类型变量b都为0;

创建一个while循环,判断是否有输入Double类型的数据;

创建一个double变量c来选择用nextDouble方法来接收键盘数据;

让变量b每个循环都加一;让变量a每个循环都加上c;

输出引导语句( "你现在输入了第"+b+"个整数数据,现在的和为:"+a)(这里的b每循环一次就加一,a每次循环都加上新的键盘数据为键盘数据的和)

用不是数字的字符a来结束循环后;

输出引导语句(b+"个数据的和为"+a)

输出引导语句(b+"个数据的平均值为"+a/b)

if(数字)

if:(如果布尔表达式1的结果为true则执行代码)如果满足if的条件就执行if的代码;

else if:(如果布尔表达式2的结果为true则执行代码)我们在实际情况里面不可能一直就两种选择,else if则可以用来表示第二钟,第三种,第四种可能;

else:(如果以上布尔表达式的结果为false则执行代码)如果上面的选择都错了,就执行else的代码;

 

 

switch(字符)

数据是数字用if,字符switch;switch本质是比较匹配;

ease具有穿透性;

这里原来是(case1~17)但太长了就删至(case1~3).这里输入了1跟(case"1")匹配,则输出("你还未成年不能购买门票"),以此类推2和3也是一样的,但这里要注意的是,一定要在后面加上(break)(退出).加上之后到(case1~3)就是结束了,否则下面的也会被输出出来.

反编译(字符的本质还是数字)

如果我们想要知道源代码是怎么运行的,就需要反编译.

每个代码的运行都要编译生成一个class(字节码文件)文件才行,但如果我们要看源码直接点开那个class文件看到的都是乱码,这里就需要用到反编译。

在idea软件里点开项目结构

这里有一个项目编译之后输出的路径,复制这个路径在文档电脑里面可以找到,但这个文件打开我们看到的是一片乱码,看不懂,需要用反编译.

 

 

 在idea软件中打开文件夹.

 

 

 里面的代码还是java文件,然后在文件层面把刚刚找到的class文件复制到那边去.

 

 

 idea软件就会帮你反编译成源代码.

哈希码是通过特点算法,给每一个“东西”一个唯一的值.每一个“东西“都会有哈希值.

而这里源代码中switch是通过哈希码(hashCode)来进行比较配对.

而我们在外面写的代码就是简单的(case "1")来比较配对;在源代码那边就要先转换为哈希码(case "49")在进行比较配对.

while(循环)

我们想要显示出1到10 !

创建一个(int)值(a);

用(while)设定条件(a<=10),然后输出a,然后a这个值加1;

这里就是从(a=0)开始,当他满足(a<=10)这个条件时就会输出a,然后a这个值就自增(+1),然后再进行循环,一直到a不满足条件为止。

还有一个就是死循环,把(while)的判断条件设定为(true)他就会一直执行下去,就拿上面的题目来举例。

如果(while)的判断条件为(true)那么这个代码就会从0一直输出下去,不会停止。我们要尽量避免使用死循环,在电脑上可以用任务管理器关闭.

do while(至少会执行一次的循环)

这里的(while)的判断条件是(阿<=100),但a的值为666.如果只是单纯的的while是输出不了的.但这里输出了666,就是因为是(都whlie)最少会执行一次把(a=666)输出了.

for(常用的循环结构)

for循环的循环过程(初始化条件——判断条件——循环语句——迭代)

for循环结构是我们最常用的结构,是最有效,最灵活的循环结构

 

 

他不同与别的循环结构,他不用先创建初始条件,再创建判断条件,然后再创建迭代

他把这三样都放在了一个括号里,方便简洁明了(括号了的初始条件,判断条件,迭代都可以一直增加没有数量限制)

练习1:计算0到100之间奇数和偶数的和

先创建奇数和(oddsum)偶数和(evebsum)

创建一个0到100之间的for循环

用if来假设当(i%2!=0)(i模2不等于0)时(oddsum+=i)(oddsum会等于oddsum+i)

反之(evensum+=i)(evenum会等于evensum+i)这样一个循环就好了,它会一直循环到(i< 100)再结束

循环结束后输出(oddsum)和(evensum)就行了

 

 

练习2:输出0~1000可以被5整除的数,并且每行输出三个

创建一个0到1000的for循环

用if来假设当(i%5==0)(i模5等于0)时,输出(i).输出语句不要(println)要(print),这样他就不会输出一个就换一行

在(i)后面加上一个制表符("\t")这样每一行的三个数都会空两格开来不会连在一起

再用if来假设当(i%15==0)时,输出一个换行

这样我们的循环就能达到要求了

但是输出的的数字中0是单独一行的,这是因为0和其他5的倍数不一样,但它模5也是等于0

这时候我们可以把循环的初始条件(i=1)改为(i=1)这样就没问题了

练习3:打印九九乘法表

我们先打印一行的;

创建一个0到9的for循环

输出就是这个效果,但这只是一列,我们需要九列

这里就需要两个循环,一个控制循环的行数,一个控制循环的列数

创建一个0到9的for循环设初始值(j=0),然后把原来的循环嵌套进去,外循环控制行数,内循环控制列数

这样就可以输出了,但输出的并不是九九乘法表而是一个从1乘1到9乘9的大杂烩,这时候我们就需要改进

把内循环的判断条件改为(i<=j)(让行数和列数保持一致,几行就输出几个值)(重点)

把内循环输出内容中的(i)和(j)换个位置(让乘法表变得更美观);然后在后面加上一个制表符("\t"),让输出的值之间有个间隔

最后在内循环结束的地方加上System.out.println() (这样内循环每循环一次就会换行)

我们的九九乘法表就打印好了

break和comtinue

break是终止循环,而comtinue是跳过满足它条件的值的循环

 

 举个例子:这个循环要输出1~50

那我们在循环里面加上条件当(j%30==0)时,break;

这个循环就输出到30就结束了

而continue则是跳过符合条件的循环,像我们这里条件是(j%5==0)时,continue;

这个循环就把5的倍数循环都跳过去了

判断要在输出结果前面,所以我们要把[System.out.print(j+"\t");]这个输出语句从for循环开始第一行移到if(j%5==0)时,continue;这个判断后面不然的话他判断完输出不了,就重新开始循环了

 

 

 

- —— - [学习资料来源](https://www.bilibili.com/video/BV12J41137hu?p=1)

posted @ 2021-09-05 19:22  为了未来美好生活  阅读(416)  评论(0)    收藏  举报