Java中Scanner类的使用

news/2025/3/19 17:03:13/文章来源:https://www.cnblogs.com/ljwking/p/18751708

一、Scanner介绍

  Scanner 类位于 java.util 包中,用于从输入源(如键盘、文件或字符串)读取数据,支持解析基本类型(如 intdouble)和字符串。

 

二、常用的方法

方法 说明
nextInt() 读取整数

nextDouble()

读取双精度浮点数
nextBoolean()

读取布尔值

next() 读取单词(以空格为分隔符)
nextLine() 读取整行文本(包括空格)
hasNextInt() 检查下一个输入是否为整数(返回true/false)
useDelimiter(";") 自定义分隔符(默认是空格/换行)

读取数据类型:nextInt()、nextDouble()、nextBoolean()、nextBayt()、nextShot()没有nextChar()!!!

  如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取

检测输入是否为相应数据类型:hasNextInt()、hasNextDouble().....

 

三、基础使用步骤

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

     

  2. 创建Scanner对象
    Scanner scanner = new Scanner(System.in); // 从键盘读取输入
    //scanner为对象名,可以用任意标识符代替 如:sc,input......
  3. 读取输入数据

    int num = scanner.nextInt();      // 读取整数
    double price = scanner.nextDouble(); // 读取浮点数
    String name = scanner.next();     // 读取单词(空格分隔)
    String line = scanner.nextLine(); // 读取整行文本

     

  4. 关闭Scanner(释放内存)
    scanner.close(); // 输入结束后关闭

     

四、每个方法的使用

  1. nextInt() 读取整数
            //1.nextInt() 读取整数System.out.println("请输入一个整数:");int a = sc.nextInt();System.out.println("你输入的整数是:"+a);

     

  2. nextDouble() 读取双精度浮点数
            //2.nextDouble() 读取双精度浮点数System.out.println("请输入一个浮点数:");double b = sc.nextDouble();System.out.println("你输入的浮点数是:"+b);
     
  3. nextBoolean() 读取布尔值 (true/false)
            //3.nextBoolean() 读取布尔值 (true/false)System.out.println("请输入一个布尔值:");boolean d = sc.nextBoolean();System.out.println("你输入的布尔值是:"+d);
     
  4. next() 读取单词(以空格为分隔符)
            //4.next() 读取单词(以空格为分隔符)System.out.println("请输入一个单词:");String e = sc.next();System.out.println("你输入的单词是:"+e);

     

  5. nextLine() 读取字符串 (读取一行)
            //5.nextLine() 读取字符串 (读取一行)System.out.println("请输入一个字符串:");String c = sc.nextLine();System.out.println("你输入的字符串是:"+c);
     
  6. hasNextInt() 判断是否还有整数可以读取 (返回true/false)
            //6.hasNextInt() 判断是否还有整数可以读取 (返回true/false)System.out.println("是否还有整数可以读取:"+sc.hasNextInt());
     
  7. useDelimiter("") 设置分隔符 (默认为空格/换行)
    //Scanner scanner = new Scanner(输入源);
    //scanner.useDelimiter("正则表达式"); 设置分隔符模式
    //典型应用:解析 CSV、日志文件、自定义格式文本。
            //7.useDelimiter("") 设置分隔符 (默认为空格/换行)//Scanner scanner = new Scanner(输入源);//scanner.useDelimiter("正则表达式");  设置分隔符模式//典型应用:解析 CSV、日志文件、自定义格式文本。sc.useDelimiter(";");System.out.println("分隔符:"+sc.delimiter()); //输出分隔符while (sc.hasNext()) {System.out.println(sc.next());}

  

 

五、注意事项

  1. next() 与 nextLine() 区别

    next():

 

    • 一定要读取到有效字符后才可以结束输入。
    • 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    • next() 不能得到带有空格的字符串。

    nextLine():

    • 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    • 可以获得空白。

  next() 读取到空格或换行符停止,nextLine() 读取到换行符停止并包含空格。

 

  2.nextLine()的陷阱

     问题nextInt() 或 nextDouble() 后直接调用 nextLine() 会读取到残留的换行符,导致跳过输入。

     解决:在 nextInt() 后加一个 nextLine() 吸收换行符:

if (scanner.hasNextInt()) {int num = sc.nextInt();
} else {System.out.println("输入的不是整数!");
}

 

 

  3.输入不匹配时会发生什么?

    抛出 InputMismatchException 异常,建议配合 hasNextXxx() 提前验证。

 

 

  4.关闭 Scanner

 

    关闭后无法再使用,若需多次输入,可只在程序结束时关闭。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901597.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20242428 实验一《Python程序设计》实验报告

学号20242428《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2424 姓名: 虎岳 学号:20242428 实验教师:王志强 实验日期:2025年3月19日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试…

记录一次PG数据库连接数超最大值问题

报错内容: nested exception is org.postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication superuser connections排查手段 : SELECT COUNT(*) FROM pg_stat_activity; 查询活跃的连接 SHOW max_connections; 查询数…

StarRocks 升级注意事项

前段时间升级了生产环境的 StarRocks,从 3.3.3 升级到了 3.3.9,期间还是踩了不少坑所以在这里记录下。因为我们的集群使用的是存算分离的版本,也是使用官方提供的 operator 部署在 kubernetes 里的,所以没法按照官方的流程进入虚拟机手动启停对应的服务。 只能使用 operato…

Grafana 添加官方模板

Refer 官方的模板地址: https://grafana.com/grafana/dashboards/ 1.进入到dashboard页面 2.点击New->Import 3.输入想要导入模板的id或者url地址都行 比如你想导入模板url地址是:https://grafana.com/grafana/dashboards/14584-argocd/ 你就可以填写上面的url地址,也可…

05C++数据类型——教学(2)

四、 数据类型.转换 教学视频 1. 数据类型类型名 类型声明 解释说明整型 int -2147483648 到 2147483647 的范围的整数长整形 long long 比上面大很多很多,这里装不下,具体搜索字符型 char 赋值只能是一个字符,比如 A,必须用单引号,双表示字符串不是字符浮点型 float 也叫…

革新科技!通过EtherCAT与Profinet网关实现温湿度监控,医药设备领域的智能革命来临!

通过网关EtherCAT---Profinet 通讯实现温湿度监控项目背景 某医药企业制药设备采用 EtherCAT 作为主控制总线,负责高速设备控制。温湿度传感器、执行器等环境监控设备基于 Profinet 通讯。 为实现机器整体环境参数的实时采集与集中监控,需要在 EtherCAT 总线与 Profinet 网络…

grafana添加跳转的超链接

1.进入到你想设置链接的dashboard中 2.选中表格-》点击Edit->进入到table 3.找到右侧栏中的 Data links -》add link:输入title和url地址,点击save 4.点击右上角的“Save dashboard”按钮保存 此时,表格中的数据点击时,就可以跳转了。

数独游戏 | 数字益智游戏①

依托国产的 AI 豆包完成的网页端的数独益智游戏。前情概要 2025年03月19日,依托豆包设计了数独游戏,嵌入到我的博客,数字益智游戏,欢迎体验。 数独游戏数独游戏.sudoku-game-container { font-family: Arial, sans-serif; display: flex; flex-direction: column; align-it…

itext5生成多个PDF并合并

PDF批量生成并合并为1个PDF 单个生成/*** 根据id查询数据* @param id 数据id* @return*/private Map<String, String> queryEntityDataById(String id) {//根据id查询Box entity = BoxService.getById(id);Map<String, String> data = new HashMap<String, Stri…

docker 容器修改端口映射

目录查看容器信息查看容器的端口映射情况,在容器外执行查找要修改容器的容器Id全称修改要端口映射的容器的配置文件查看容器信息 docker ps -a查看容器的端口映射情况,在容器外执行 docker port 容器ID 或者 docker port 容器名称查找要修改容器的容器Id全称 docker inspect …

Allure的下载安装以及自动生成测试报告

一、下载Allure压缩包 访问此链接:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 根据你个人的需求,下载对应的allure版本即可,哪个兼容就下载哪个,需要哪个下载哪个。 比如,小编自己就随便下载了一个版本 下载完成之后,将下载好的安装包解…

referrerpolicy-以最小的成本实现系统的图片上传

背景 系统上传图片一般有以下三种方案:购买云存储(比如 AWS S3、阿里云 OSS、腾讯云 COS),获取图片URL 直接将图片上传到服务器,存储在本地作为静态资源 使用第三方的图片服务(比如有道、博客园),借用对方资源结合本系统需求:自建博客尽可能减少预算,方案1放弃;方案…