Scanner类是Java中读取用户输入的常用工具,位于java.util包中。通过创建Scanner实例并传入System.in,可使用nextInt()、nextDouble()等方法读取基本数据类型;读取含空格字符串需用nextLine(),但要注意nextInt()后需调用一次nextLine()吸收换行符,避免输入跳过。为防止非法输入,可用hasNextInt()进行校验,并通过循环提示重输。建议使用完毕后调用close()释放资源,避免泄露。尽管性能不如BufferedReader,但Scanner简单易用,适合初学者和算法练习。

在Java中,Scanner 类是读取用户输入最常用的方式之一。它位于 java.util.Scanner 包中,可以方便地从控制台、文件或字符串中解析基本数据类型和字符串。下面介绍它的常见用法和使用技巧。
要使用 Scanner,必须先创建其实例,并传入输入源(如 System.in 表示标准输入)。之后可调用相应方法读取不同类型的数据。
例如,从控制台读取整数和字符串:
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int number = scanner.nextInt();
System.out.print("请输入一个字符串: ");
String text = scanner.next(); // 注意:next()不读取空格后内容
System.out.println("你输入的整数是: " + number);
System.out.println("你输入的字符串是: " + text);
scanner.close(); // 建议关闭资源
}
}
使用 scanner.next() 只能读取以空白符分隔的单个词,若想读取一整行(包括空格),应使用 scanner.nextLine()。
立即学习“Java免费学习笔记(深入)”;
注意:在 nextInt() 等方法后调用 nextLine() 时,可能会“跳过”输入,因为 nextInt 不会 consume 换行符。解决方法是在中间加一次 dummy nextLine:
System.out.print("请输入年龄: ");
int age = scanner.nextInt();
// 消费掉换行符
scanner.nextLine();
System.out.print("请输入姓名: ");
String name = scanner.nextLine(); // 正常读取全名
Scanner 支持多种读取方法:
示例:安全读取整数,防止输入异常:
while (!scanner.hasNextInt()) {
System.out.println("请输入有效的整数!");
scanner.next(); // 跳过非法输入
}
int validNumber = scanner.nextInt();
程序结束前建议调用 scanner.close(),避免资源泄露。如果 Scanner 用于读取 System.in,在关闭后再次创建 Scanner 可能会导致无法读取输入(某些环境下)。
若在多个地方使用,可考虑只创建一个 Scanner 实例并复用,最后统一关闭。
基本上就这些。Scanner 简单易用,适合初学者和小型项目。对性能要求高或处理复杂输入时,可考虑 BufferedReader 配合 Integer.parseInt() 等方式。但日常练习和算法题中,Scanner 完全够用。
以上就是在Java中如何使用Scanner读取输入数据_Scanner类使用经验的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号