当前位置: 首页 > news >正文

Java java.util.Scanner 使用教程

Scanner 类是 Java 中一个非常实用的工具,用于解析基本类型和字符串的简单文本扫描器。它可以将输入分解为标记(tokens),然后使用各种 next 方法将其转换为不同的数据类型。

1. 基本使用步骤

1.1 导入 Scanner 类

import java.util.Scanner; // 必须导入

1.2 创建 Scanner 对象

Scanner scanner = new Scanner(System.in); // 从标准输入读取

1.3 读取输入

System.out.print("请输入一个整数: ");
int num = scanner.nextInt(); // 读取整数

1.4 关闭 Scanner

scanner.close(); // 使用完毕后关闭

2. 常用方法

2.1 读取基本类型

方法描述
nextInt()读取一个 int 值
nextDouble()读取一个 double 值
nextFloat()读取一个 float 值
nextLong()读取一个 long 值
nextShort()读取一个 short 值
nextByte()读取一个 byte 值
nextBoolean()读取一个 boolean 值

2.2 读取字符串

方法描述
next()读取一个单词(以空白符分隔)
nextLine()读取一行文本(直到换行符)

3. 使用示例

3.1 读取不同类型输入

Scanner scanner = new Scanner(System.in);System.out.print("请输入您的姓名: ");
String name = scanner.nextLine();System.out.print("请输入您的年龄: ");
int age = scanner.nextInt();System.out.print("请输入您的身高(m): ");
double height = scanner.nextDouble();System.out.println("姓名: " + name);
System.out.println("年龄: " + age);
System.out.println("身高: " + height + "m");scanner.close();

3.2 处理多个输入

Scanner scanner = new Scanner(System.in);System.out.println("请输入三个数字,用空格分隔:");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();System.out.println("三个数字的和是: " + (a + b + c));scanner.close();

3.3 循环读取输入

Scanner scanner = new Scanner(System.in);
System.out.println("请输入多个数字,输入非数字结束:");while(scanner.hasNextInt()) {int num = scanner.nextInt();System.out.println("读取到数字: " + num);
}System.out.println("输入结束");
scanner.close();

4. 注意事项

  1. nextLine() 陷阱

    • nextInt()nextDouble() 等之后调用 nextLine() 可能会跳过输入
    • 解决方法:在调用 nextLine() 前添加一个额外的 nextLine() 消耗换行符
    Scanner scanner = new Scanner(System.in);System.out.print("请输入年龄: ");
    int age = scanner.nextInt();scanner.nextLine(); // 消耗换行符System.out.print("请输入姓名: ");
    String name = scanner.nextLine();scanner.close();
    
  2. 输入验证

    • 使用 hasNextXxx() 方法检查输入是否有效
    • 例如 hasNextInt() 检查是否有整数输入
    Scanner scanner = new Scanner(System.in);System.out.print("请输入一个整数: ");
    while(!scanner.hasNextInt()) {System.out.println("输入无效,请重新输入整数: ");scanner.next(); // 消耗无效输入
    }
    int num = scanner.nextInt();scanner.close();
    
  3. 资源管理

    • 使用 try-with-resources 自动关闭 Scanner
    • 推荐方式:
    try (Scanner scanner = new Scanner(System.in)) {System.out.print("请输入内容: ");String input = scanner.nextLine();System.out.println("您输入的是: " + input);
    }
    

5. 高级用法

5.1 使用分隔符

String input = "apple,orange,banana";
Scanner scanner = new Scanner(input);
scanner.useDelimiter(","); // 设置逗号为分隔符while(scanner.hasNext()) {System.out.println(scanner.next());
}scanner.close();

5.2 从文件读取

try (Scanner fileScanner = new Scanner(new File("data.txt"))) {while(fileScanner.hasNextLine()) {System.out.println(fileScanner.nextLine());}
} catch (FileNotFoundException e) {System.out.println("文件未找到");
}

5.3 从字符串读取

String data = "1 2 3 4 5";
Scanner stringScanner = new Scanner(data);int sum = 0;
while(stringScanner.hasNextInt()) {sum += stringScanner.nextInt();
}System.out.println("总和: " + sum);
stringScanner.close();

6. 总结

Scanner 类是 Java 中处理输入的强大工具,可以:

  • 从控制台、文件或字符串读取输入
  • 将输入转换为各种数据类型
  • 使用分隔符解析复杂输入

记住要:

  1. 总是导入 java.util.Scanner
  2. 处理完输入后关闭 Scanner
  3. 注意 nextLine() 的使用陷阱
  4. 对用户输入进行验证

通过灵活使用 Scanner,可以轻松处理各种输入场景。

http://www.dtcms.com/a/299694.html

相关文章:

  • 工作流的研究方向
  • (Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
  • 嵌入式分享#27:原来GT911有两个I2C地址(全志T527)
  • 数据湖产品全解析:2025 年主流解决方案选型指南
  • 酒店智能门锁SDK新V门锁系统接口函数[2025版]Delphi 7.0——东方仙盟硬件接口库
  • AI三巨头:机器学习、深度学习与人工智能解析
  • k8s:利用kubectl部署nginx
  • window10和ubuntu22.04双系统之卸载ubuntu系统
  • 方案C,version2
  • Fast_Lio 修改激光雷达话题
  • 【动态规划-斐波那契数列模型】理解动态规划:斐波那契数列的递推模型
  • 【Canvas技法】绘制正N角星
  • 【机器学习-1】特征工程与KNN分类算法
  • 鲲鹏服务器logstash采集nginx日志
  • 微分方程入门之入门之入门,纯笔记
  • Android Jetpack 组件库 ->WorkManager
  • 【Keepalived】高可用集群
  • Illustrator 删除编辑记录
  • 【简述】C++11/14/17/20/23 中的关键新特性
  • MPI练习:前缀和问题
  • 泛微OA8前台SQL注入
  • GPU运维常见问题处理
  • [硬件电路-93]:模拟器件 - 晶体管的静态工作点,让晶体管工作在其放大电路舞台的中央!!!
  • 企业级 AI 工具选型报告:9 个技术平台的 ROI 对比与部署策略
  • JavaScript:现代Web开发的核心动力
  • 无刷电机行业新一代AI智能化MES系统解决方案
  • LLM参数优化算法与经典理论揭秘
  • JVM 基础架构全解析:运行时数据区与核心组件
  • flask健康减脂饮食推荐—计算机毕业设计源码—07378
  • Oracle 误删数据恢复