JAVA 流程控制

# 流程控制

## 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字符串的本质是比对字符串的哈希值

![image-20210316232137188](C:\Users\MeteorLu\AppData\Roaming\Typora\typora-user-images\image-20210316232137188.png)



## 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 文件夹下去执行
posted @ 2021-03-17 22:37  MeteorLu  阅读(46)  评论(0)    收藏  举报