2.6 Java的基础概念(键盘录入)
一、什么是键盘录入键盘录入是指程序在运行时从用户通过键盘输入的数据中读取信息实现人机交互。这是控制台程序Console Application获取用户输入的最常见方式。典型应用场景输入用户名/密码进行登录输入数字进行数学计算选择菜单项如 “请输入 1~3 进行选择”二、Java 中实现键盘录入的主要方式Java中有多种方式实现键盘录入但99%的学习和开发场景推荐使用java.util.Scanner类它简单易用、功能强大。2.1 Scanner 基本使用步骤使用Scanner只需4步非常简单import java.util.Scanner; // 第一步导入 Scanner 类必须写在类上面 public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); // 第二步创建 Scanner 对象固定写法 System.out.print(请输入您的姓名); String name sc.nextLine(); // 第三步读取输入根据数据类型选方法 System.out.println(您好 name ); sc.close(); // 第四步关闭资源良好习惯防止资源泄漏 } }2.2 Scanner 常用读取方法Scanner提供了多种方法来读取不同类型的数据下表是最常用的几个方法功能说明推荐场景nextLine()读取一整行字符串包括空格遇到回车才停止会读取空格✅ 推荐用于读取字符串如姓名、地址next()读取一个单词遇到空格/回车就停止不读取空格读取单个单词如用户名nextInt()读取一个int整数输入非整数会抛出InputMismatchException读取整数如年龄、数量nextDouble()读取一个double浮点数输入非数字会抛出异常读取小数如价格、成绩nextBoolean()读取true/false必须输入true或false否则报错读取布尔值如是否同意代码示例对比Scanner sc new Scanner(System.in); System.out.print(输入名字带空格); String fullName sc.nextLine(); // 输入 张 三 → 正确读取 张 三 System.out.print(输入年龄); int age sc.nextInt(); // 输入 25 → 正确读取 25 sc.close();三、 常见陷阱与解决方案初学者必看Scanner虽然简单但有两个非常经典的“坑”初学者90%都会遇到这里给你讲透原因和解决方案。问题1nextInt()后nextLine()读不到内容原因nextInt()只读取数字不读取后面的换行符\n导致下一次nextLine()直接读到这个“空行”以为用户输入完了。错误示例Scanner sc new Scanner(System.in); System.out.print(年龄); int age sc.nextInt(); // 输入 20 回车 System.out.print(姓名); String name sc.nextLine(); // name 为空直接读到了换行符 System.out.println(年龄 age 姓名 name); // 姓名显示不出来解决方案1推荐在nextInt()后加一个sc.nextLine()消费掉换行符int age sc.nextInt(); sc.nextLine(); // 关键消费掉换行符 String name sc.nextLine(); // 现在可以正常输入姓名了解决方案2更安全统一使用nextLine()读取再手动转换类型String ageStr sc.nextLine(); // 先读字符串 int age Integer.parseInt(ageStr); // 再转成int需处理异常 String name sc.nextLine(); // 正常读取问题2输入类型不匹配导致程序崩溃原因如果用户输入的类型和你调用的方法不匹配比如让输入整数用户输入了abcScanner会直接抛出InputMismatchException导致程序崩溃。错误示例System.out.print(请输入整数); int num sc.nextInt(); // 用户输入 abc → 直接报错程序终止解决方案使用hasNextXxx()方法先预判再读取System.out.print(请输入整数); if (sc.hasNextInt()) { // 先判断输入的是不是整数 int num sc.nextInt(); System.out.println(输入的整数是 num); } else { System.out.println(输入的不是整数请重新输入。); sc.next(); // 清除掉非法输入防止死循环 }四、其他键盘录入方式了解即可除了ScannerJava还有其他录入方式但初学者不推荐使用了解一下即可方式说明是否推荐BufferedReaderInputStreamReader更高效适合大量输入⚠️ 初学者不推荐代码复杂需处理异常Console类System.console()安全输入如密码输入不回显但 IDE 中可能返回null❌ 不适用于大多数 IDE如 IDEA、Eclipse结论99% 的学习和开发场景只用 Scanner 就够了五、完整示例用户信息录入程序下面是一个综合示例把前面讲的知识点都用上展示如何正确录入多种类型的数据import java.util.Scanner; public class UserInfoInput { public static void main(String[] args) { Scanner sc new Scanner(System.in); // 1. 读取姓名带空格也不怕 System.out.print(请输入姓名); String name sc.nextLine(); // 2. 读取年龄注意处理换行符 System.out.print(请输入年龄); int age sc.nextInt(); sc.nextLine(); // 关键消费掉nextInt()留下的换行符 // 3. 读取城市 System.out.print(请输入城市); String city sc.nextLine(); // 4. 读取成绩小数 System.out.print(请输入成绩); double score sc.nextDouble(); // 输出录入的信息 System.out.println(\n--- 您的信息 ---); System.out.println(姓名 name); System.out.println(年龄 age); System.out.println(城市 city); System.out.println(成绩 score); sc.close(); // 关闭资源 } }六、最佳实践建议优先使用nextLine()读取字符串避免空格截断能读取完整的一行内容。混合输入时注意换行符残留nextInt()、nextDouble()等方法后一定要加一个nextLine()清空换行符。及时关闭 Scanner使用完后调用sc.close()防止资源泄漏虽然小程序不影响但这是好习惯。不要在循环中频繁创建 Scanner 对象应在循环外创建一次循环内重复使用。生产环境需做输入校验加上hasNextXxx()判断防止非法输入导致程序崩溃必要时加上异常处理。七、小练习import java.util.Scanner; public class TestScanner { public static void main(String[] args) { //创建对象 Scanner sc new Scanner(System.in); //录入数据 //提示 System.out.println(计算两数之和); System.out.print(请输入第一个整数); int i sc.nextInt(); System.out.print(请输入第两个整数); int i1 sc.nextInt(); //计算两数之和 int sum 0; sum ii1; System.out.println(两数之和为 sum); } }