用户交互scanner
scanner类对象用于获取用户的输入。
先创建一个Scanner对象
Scanner 对象名 = nwe Scanner(Syetem.in)
再通过Scanner类的next()和nextline()方法获取输入的字符串,在读取前一般使用hasNext()和hasNextline()判断是否有输入的数据。
凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉。
next()只读取空格前的有效字符串。
nextline()以enter为结束符,一般使用这个方式接收。
下面是实际操作
图二
能运行,但是......不好说,如下图,第一次输入不能输入字符,否则程序运行不了,第二次输入可以输字符,但是输入整数,输出的结果却是小数。一看就是我自己认真写的,别人不可能写这么烂,也不是随便输入然后狂按tab键,如果是不会写得这么烂emmmmmm。
顺序结构(简单)
Java的最基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构。语句与语句之间,框与框之间,是按照从上到下的顺序进行的,他是由若干个依次执行的处理步骤组成的,它是任何算法都离不开的基本结构。
选择结构
if单选结构
语法:
有一个方法equals,单词意思是平等的,这个方法是来判断输入的字符串是否等于某些字符串,具体操作如下。
具体操作
输入如果不为hello,那将只会输出一个End,如果输入为hello,那将会输出一个hello和一个End。
if双选结构
与双选结构类似,但是有两个选择,只会输出一个结果,有种非此即彼的感觉。
语法
具体代码如下。
如果输入为hello,那么输出也为hello,且只有hello,如果输入不为hello,那么输出结果只为End。
if多选结构
拥有更多的选择,除了黑与白之外还有灰。
具体代码如下
这个程序的输出有三种可能
- 当输入大于等于90时,输出为“YOU WIN”;
- 当输入小于等于60时,输出为“YOU LOSE!”;
- 当输入大于80小于小于90时,输出为“YOU DRAW!”。
注意,if语句下面需要一个else语句,虽然没有程序也能执行,或许是为了程序的可读性和严谨吧。
嵌套的if结构
意思就是可以套娃,一环套一环,可以在一个if结构嵌套另一个if结构。
语法
具体代码
没有截屏到Scanner close;
输出结果
switch多选择结构
多选择结构还有一个实现方式就是switch case语句,switch case语句判断一个变量与一系列值中的某个值是否相等,每个值称为一个分支。
switch语句的变量可以是byte,short,int或char,支持字符串string类型,同时case标签必须为字符串常量或者字面量。
case具有穿透能力,如果不在分支后面加入break,就会将匹配到的那个分支后面的选项也输出。具体操作如下,
运行结果
为什么可以输入两次?case的穿透功能呢?解决了输入两次的问题,虽然还不知道什么原理。
应该这么写。case的穿透能力目前还不清楚为什么失效了,奇怪,没有了break也不会穿透???
循环结构
可以多次循环一个结构,布尔表达式为"true"则为死循环。
while循环
语法
具体代码
sum是变量名
while循环满足的条件是a<=100,加上a的自增,然后再进行下一步的运算,变量sum等于a加一,
假设第一轮得到的sum的值为0,由于第二轮a自增了,sum的值为0+1,第三轮sum的值为1+2,第四轮sum的值为1+2+3。我的理解是每轮计算开始之前的sum值是上一轮sum+=a的结果,上一轮sum的结果可能是1+2+3+4+...n,那么这一轮的sum的值可能是1+2+3+4+...+n+n+1。这里的n是上一轮结束后的a,这一轮的a就是n加一。
上面这段文字自己想的,标个颜色区分一下,哈哈,好有成就感,虽然我知道理解这个代码对别人来说很简单,但我不想对比别人,否则成就感就要消失了(^~^)。
do while循环
与while循环类似,区别是无论是否满足条件都至少会循环一次,将while和布尔表达式放到了后面,所有的结构都满足顺序结构。语法如下
for循环
初始化我的理解是定义一个数据类型,比如int a = 0;
布尔表达式我的理解是条件判断。
更新也可以称为迭代,例如通过让变量a不断地自增,来迭代,否则可能一个数字会循环无数遍,刚刚试了一下。
for循环语句是一种支持迭代的通用结构,是最灵活的,最有效的循环结构。
for循环的执行次数在执行前就确定了。
一个死循环。
评论记录:
回复评论: