Bootstrap

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);

输入 truefalse 会返回相应的布尔值。

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() 关闭它,以释放资源。

;