简介:Java中的Scanner类是java.util包下的一个非常实用的输入流处理工具类,能够方便地获取控制台输入并解析为各种数据类型。
Java中的`Scanner`类是Java 5引入的一个新特性,属于`java.util`包,它提供了从各种输入源(如键盘、文件、网络连接等)读取基本类型数据和字符串的功能。这个类的使用极大地简化了用户输入处理。
创建`Scanner`对象的基本语法如下:
```java
Scanner s = new Scanner(System.in);
```
这里的`System.in`表示标准输入流,通常用于从键盘接收用户输入。在使用`Scanner`类获取输入之前,通常需要先使用`hasNext()`或`hasNextLine()`方法判断是否还有输入的数据。
### 使用 `next() 方法
`next()` 方法用于读取用户的下一个标记,这个标记是一个由非空白字符组成的字符串。例如:
```java
String str1 = scan.next();
```
当调用 `next()` 时,它会跳过所有前导空白,然后读取直到遇到第一个空白字符为止,不包含该空白字符。这意味着如果用户输入 runoob com,`next()` 只会返回 runoob,并不会包括 com。
### 使用 `nextLine() 方法
与之不同的是,`nextLine()` 以换行符为结束标志,读取到当前行的结尾为止的所有内容。例如:
```java
String str2 = scan.nextLine();
```
当使用 `nextLine()`时,它会读取从当前位置到行尾的所有字符,包括空格。因此对于 runoob com 的输入,`nextLine()` 将返回完整的字符串 runoob com。
### `next() 与 nextLine() 的区别
- 使用 `next()` 方法必须读取到有效字符后才能结束,并且会忽略前导空白,只读取第一个空白字符之前的内容。
- 而使用 `nextLine()` 则以 Enter 键为标志来确定输入的终止位置,包括空格在内的所有内容都会被读入。
### 输入基本类型数据
除了字符串之外,`Scanner` 还支持直接从控制台读取整数和浮点数值。例如:
```java
int i = 0;
float f = 0.0f;
System.out.print(输入整数:);
if (scan.hasNextInt()) {
i = scan.nextInt();
System.out.println(整数数据: + i);
} else {
System.out.println(输入的不是整数!);
}
System.out.print(输入小数:);
if (scan.hasNextFloat()) {
f = scan.nextFloat();
System.out.println(小数数据: + f);
} else {
System.out.println(输入的不是小数!);
}
```
在读取数值类型的数据之前,使用 `hasNextInt()` 或者 `hasNextFloat()` 方法进行验证可以确保用户输入的是正确的数据格式。
总结来说,`Scanner` 类是 Java 中处理用户输入的重要工具。它提供了一种灵活的方式来从控制台获取各种类型的输入数据(包括字符串、整数和浮点数值等),从而实现更复杂的交互式程序功能。