# 流程控制
## Scanner对象
Java提供了一个工具类 java.util.Scanner 是Java 5 新特征,可以通过Scanner类获取用户的输入
基本语法:
```java
Scanner s = new Scanner(System.in);
```
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
### 使用next()方法
```java
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("使用next方法接收:");
//判断用户有没有输入字符串
if (s.hasNext()){
//使用next方式接收
String str = s.next();
System.out.println("输入的内容是:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,需要关闭释放
s.close();
}
```
### 使用nextLine()方法
```java
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("使用nextLine方法接收:");
//判断用户有没有输入字符串
if (s.hasNextLine()){
//使用nextLine方式接收
String str = s.nextLine();
System.out.println("输入的内容是:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源,需要关闭释放
s.close();
}
```
### next()与nextLine()的区别
**next():**
1. 一定要读取到有效字符后才可以结束输入;;
2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉;
3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4. next()不能得到带有空格的字符串。
**nextLine():**
1. 以Enter为结束符,也就是说返回的是输入回车以前的所有字符;
2. 可以获得空白
## 判断输入的是否为特定的数值
以是否输入整数为例
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0F;
System.out.println("请输入一个整数:");
//判断下一个输入的是否为整数
if(scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("刚才输入的整数为:"+i);
}else {
System.out.println("输入不合法!");
}
scanner.close();
}
```
同理,还有
nextFloat() nextString()等等;
## Switch 分支结构
### 语法
```java
switch(expression){
case value1 :
//语句
break;
case value2 :
//语句
break;
default : //可选
//语句
}
```
### **注意事项:**
- switch语句中的变量类型可以是:
- byte,short,int,char
- 从JAVA SE 7 开始 ,可以支持 String
- case后面必须为变量、常量和字面量
- 如果不加break,会出现case穿透现象
### 支持Switch的本质
通过Idea反编译可以得出比对case字符串的本质是比对字符串的哈希值

## break 和 continue
- break 在任何循环语句的主体部分,均可用break控制循环的流程。Break用于强行退出循环,不执行循环中剩余的语句。(也可以在switch语句中使用)
- continue 语句用在循环语句中,用于中止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
- Go to 尽管为java的一个保留字,但并未在语言中得到正式使用:java没有Goto ,然而在break 和 continue 两个关键字上,运用标签来运行goto的功能。如 label:
## main方法
```java
public static void main(String[] args) {
//args[] 是传递给main方法的参数,默认为空
}
```
在DOS界面下,使用javac可以编译.java文件到.class字节码文件
但如果用使用java命令执行.class文件时,必须到/src 文件夹下去执行