资源说明:java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
下面是创建 Scanner 对象的基本语法:
Scanner s = new Scanner(System.in);
接下来我们演示一个简单的的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
使用 next 方法: ScannerDemo.java 文件代码: import java.util.Scanner
Java中的`Scanner`类是Java 5引入的一个新特性,属于`java.util`包,它提供了从各种输入源(如键盘、文件、网络连接等)读取基本类型数据和字符串的功能。`Scanner`类的使用极大地简化了用户输入处理。
创建`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中处理用户输入的重要工具,它提供了一种灵活的方式来读取各种类型的数据,包括字符串、整数、浮点数等。在实际编程中,`Scanner`的使用可以帮助我们更方便地从控制台获取用户输入,从而实现更复杂的交互式程序。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。