java Scanner
在 Java 中,Scanner
是一个用于从输入流中读取数据的类,常用于从控制台读取用户输入。它位于 java.util
包中,并提供了多种读取不同类型数据的方法。以下是 Scanner
类中最常用的几个方法以及它们的详细说明。
1. 创建 Scanner
对象
首先,要使用 Scanner
,你需要创建一个 Scanner
对象。通常用于从标准输入流(控制台)读取数据:
Scanner scanner = new Scanner(System.in);
System.in
表示从控制台读取输入。
2. 常用方法
1. next()
- 功能:读取下一个完整的单词(以空格为分隔符)。
- 返回类型:
String
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个单词:");
String word = scanner.next();
System.out.println("您输入的单词是: " + word);
如果输入的是 "Hello World",则 next()
只会读取到 "Hello"。
2. nextLine()
- 功能:读取整行输入,包括空格。
- 返回类型:
String
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一行文字:");
String line = scanner.nextLine();
System.out.println("您输入的内容是: " + line);
如果输入的是 "Hello World",nextLine()
会读取整个 "Hello World"。
3. nextInt()
- 功能:读取下一个整数。
- 返回类型:
int
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("您输入的整数是: " + num);
如果输入的是 42
,则 nextInt()
会返回 42
。
注意:如果输入的不是有效的整数类型,nextInt()
会抛出 InputMismatchException
。
4. nextDouble()
- 功能:读取下一个双精度浮点数。
- 返回类型:
double
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个浮点数:");
double value = scanner.nextDouble();
System.out.println("您输入的浮点数是: " + value);
输入 3.14
会返回 3.14
。
5. nextBoolean()
- 功能:读取下一个布尔值。
- 返回类型:
boolean
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个布尔值 (true/false):");
boolean flag = scanner.nextBoolean();
System.out.println("您输入的布尔值是: " + flag);
输入 true
或 false
会返回相应的布尔值。
6. hasNext()
- 功能:检查是否还有下一个输入项。
- 返回类型:
boolean
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段文本:");
while (scanner.hasNext()) {
String word = scanner.next();
System.out.println("您输入的单词是: " + word);
}
这个方法会持续读取直到输入结束。
7. hasNextLine()
- 功能:检查是否还有下一行输入。
- 返回类型:
boolean
- 示例:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一些文本:");
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println("您输入的行是: " + line);
}
8. close()
- 功能:关闭
Scanner
对象,释放资源。这个方法应该在不再需要读取输入时调用。 - 示例:
Scanner scanner = new Scanner(System.in);
// 做一些读取操作
scanner.close(); // 关闭 scanner
3. 使用 Scanner
时的注意事项
- 输入错误处理:如果用户输入的数据类型不匹配(例如,输入一个字母而程序期望一个整数),
Scanner
会抛出InputMismatchException
。可以通过try-catch
语句来处理异常。
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
System.out.println("您输入的整数是: " + num);
} catch (InputMismatchException e) {
System.out.println("输入错误,请输入一个有效的整数。");
}
nextLine()
和其他方法的关系:当你使用nextInt()
、nextDouble()
等方法时,它们会读取输入的部分数据,但会留下一个换行符(即回车符)在输入缓冲区。这可能导致随后的nextLine()
调用读取到空行。解决这个问题的一个常见方法是在使用nextInt()
或nextDouble()
后再调用一次nextLine()
来消费掉这个换行符。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num = scanner.nextInt();
scanner.nextLine(); // 消耗掉剩余的换行符
System.out.println("请输入一行文字:");
String line = scanner.nextLine();
4. 总结
Scanner
是一个非常强大的工具,适合用来处理用户输入和从文件中读取数据。通过使用 next()
、nextLine()
、nextInt()
、nextDouble()
等方法,你可以根据不同的需求读取不同类型的数据。记住在使用完 Scanner
后调用 close()
关闭它,以释放资源。