在Java的流程控制中,通过Scanner类 来获取用户的输入,基本用法如下:
创建一个扫描器对象,用于接收键盘数据,如下式所示。
Scanner s = new Scanner(System.in);
在读取输入字符串前,一般需要使用hasNext() 和 hasNextLine() 来判断是否还有输入的数据,如下式所示。
if(scanner.hasNext()){} if(scanner.hasNextLine()){}
注:还可以通过使用hasNextInt()、hasNextFloat、hasNextDouble 来判断输入是否为整数输入、小数输入以及输入是否为数字,如下图所示。
通过next() 和 nextLine() 方法来获取输入的字符串,如下式所示。
String str = scanner.next(); String str = scanner.nextLine();
注:
next()方法,以空格作为结束符 ,在有效字符之前的空格,next()方法会将其去掉,在有效字符之后的空格,next()方法会将其视为分隔符或结束符。综上:next()方法不能够得到带有空格的字符串,但使用next()方法可以实现数字的多次间隔输入。
nextLine()方法,以回车(Enter)作为结束符 ,获得回车前的所有字符。综上:nextLine()方法可以获得空格的输入。
在输入完毕后,需要结束Scanner类 ,如下式所示。
scanner.close();
注:凡是属于IO流(输入输出流)的类,如果不关闭会一直占用资源,故应该在用完后就结束。
输入效果,如下图所示。
顺序结构
Java的基本结构,从上到下,按顺序一句句执行。
选择结构
if单选结构,如下式所示。
if双选结构,如下图所示。
if多选结构,如下图所示。
注:其中有一个else if 检测为true,那么其他的else if以及else都将跳过执行。
嵌套if结构,如下图所示。
注:流程控制语句都可以进行相互嵌套!
switch多选结构,更适用于具体值的匹配问题,如下图所示。
其中,自JDK7以后,表达式结果可以为字符串。另外,case具有穿透性,需要在case语句后添加break语句来解决穿透性问题。
补:equals()方法,可以用来判断字符串是否相等。
eg:a.equals(b),表示a是否与b相等,如下图所示。
循环结构
while循环 ,如下图所示。
注:
大多数情况下是会让循环停止下来的,故需要一个让表达式失效的方式。
少部分情况下会让循环一直执行,如服务器请求响应、监听等。
do while循环 ,如下图所示。
区别:while语句是先判断,后执行;do while语句是先执行,后判断,即使是不满足条件,也要至少执行一次。
for循环 ,for循环结构让循环结构更加简单。这一循环,在循环前就已经明确循环的执行次数,如下图所示。
注:
可通过快捷方式100.for的形式快速生成循环语句,生成语句如下式所示。
for(int i = 0; i < 100; i++){}
初始化初值时,只可以声明一个类型,但可以初始化一个或多个循环控制变量。条件判断和迭代也可以相应地增加变量,如下图所示。
for( ; ; ) 为死循环。
加强for循环 ,目的是为了更好地遍历数组和集合对象,如下图所示。
break 用于强制退出循环,不执行循环中的剩余语句,如下图所示。
continue 用于终止某次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定,如下图所示。
label(标签),在使用break、continue进行中断时,会中断到存在标签的地方,不建议使用!!!如下图所示。
IDEA提供反编译文件功能,将输出文件中的.class文件,直接拖到IDEA中,双击打开,即可看到反编译文件。