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

Scanner是个工具,是用来扫描我们用户输入数据的类.创建一个扫描器的对象,用他来接收键盘数据,而这个新Scanner对象的名字叫scanner.
这一步是用来判断还有没有输入的的数据,循环要用到,如果是其他可以省略.
而scanner是用nextline方法接收的,接收了之后赋值给字符串sty.

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

要求输入数据的和,平均数.
创建一个扫描器对象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)

浙公网安备 33010602011771号