java中用scanner读取控制台输入需先创建scanner对象关联system.in,再调用nextxxx()方法获取数据,注意换行符残留及用hasnextxxx()校验输入避免异常。

Java中用Scanner类读取控制台输入,核心是创建Scanner对象并调用对应方法获取不同类型的数据,注意处理换行符残留和异常即可。
创建Scanner对象并关联System.in
Scanner需要一个输入源,控制台输入的标准源是System.in。必须先实例化Scanner对象,才能调用读取方法:
- 使用new Scanner(System.in)初始化
- 建议在使用完毕后调用scanner.close()释放资源(尤其在循环或多次输入场景中)
- 若在main方法末尾关闭,且程序即将退出,可省略,但养成习惯更稳妥
按需选择nextXxx()方法读取数据
Scanner提供一系列以next开头的方法,对应不同数据类型,使用时需注意行为差异:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- nextLine():读取整行(含空格),会消费掉回车符,常用于字符串输入
- next():只读取下一个由空白符分隔的“单词”,遇到空格、Tab或回车即停止
- nextInt()、nextDouble()、nextBoolean()等:读取对应类型数值,但不消费结尾的换行符
- 若在nextInt()后紧跟nextLine(),需额外加一行nextLine()来“吃掉”残留换行符,否则后者会直接返回空字符串
处理输入异常与校验
用户可能输入不符合预期的内容(如要数字却输字母),导致InputMismatchException。推荐做法:
- 用hasNextXxx()方法预先判断(如hasNextInt()),再调用nextXxx()读取
- 配合while循环实现重试逻辑,提示用户重新输入
- 避免直接捕获异常作为主要流程控制,优先用hasNext系列做前置检查更清晰
完整示例:带校验的年龄输入
以下代码安全读取一个1~120之间的整数年龄:
Scanner sc = new Scanner(System.in);
int age = 0;
while (true) {
System.out.print("请输入年龄(1-120):");
if (sc.hasNextInt()) {
age = sc.nextInt();
if (age >= 1 && age Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










