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

【Java】nextInt()后面紧接nextLine()读取不到数据/InputMismatchException异常的解决方案

错误如下:

有时候还会抛出InputMismatchException异常

看!我只输入了一个5,并没有给str赋值,它就已经将结果打印出来了!这就意味着,str是读取到了数据的,只不过这个数据并不是我们想要的输入的数据!

这是因为nextInt() / nextDouble() 和 nextLine()的处理机制不同!

  • nextInt() / nextDouble()在缓冲区中遇到 回车符、空格等空白字符时,它会将空白字符之前的数据都读走,但此时,空白字符还留在缓冲区中!
  • nextLine()会把包括空白字符在内的数据都读走,所以这时就可以说得通为什么我们并没有输入,但是str就已经有值了,这是因为它读取到了我们在nextInt()输入最后打出的回车符!

解决方案:

  1. 在nextInt() / nextDouble()再添加一个nextLine(),让这个nextLine()将空白字符读走
  2. 将nextLine()换成next()

补充说明:

  •  Scanner的next()、nextInt()、nextLine()读取机制更详细的介绍:【JAVA】Scanner的next()、nextInt()、nextLine()读取机制
http://www.lryc.cn/news/194289.html

相关文章:

  • 【传输层协议】UDP/TCP结构特点与原理(详解)
  • 哪种网站适合物理服务器
  • uni-app集成使用SQLite
  • Qt不能安装自己想要的版本,如Qt 5.15.2
  • 学信息系统项目管理师第4版系列28_组织级项目管理和量化项目管理
  • Bean实例化的三级缓存
  • Jenkins+Gitlab+Docker(Dockerfile)部署
  • Web前端-Vue2+Vue3基础入门到实战项目-Day4(组件的三大组成部分, 组件通信, 案例-组件版小黑记事本, 进阶语法)
  • 【大模型应用开发教程】01_大模型简介
  • Flume 简介及基本使用
  • 行业追踪,2023-10-11
  • Linux:进程控制
  • HTTP中的GET方法与POST方法
  • 2023年10月16日-10月22日,(光追+ue+osg继续按部就班进行即可。)
  • 【Docker】命令使用大全
  • 查找算法:二分查找、插值查找、斐波那契查找
  • python+django高校教室资源预约管理系统lqg8u
  • Potato靶机
  • 【环境搭建】linux docker-compose安装gitlab和redis
  • JAVAEE初阶相关内容第十三弹--文件操作 IO
  • POI报表的高级应用
  • 【计算机毕设选题推荐】超市管理系统SpringBoot+SSM+Vue
  • 【算法1-4】递推与递归-P1002 [NOIP2002 普及组] 过河卒
  • 浅谈压力测试的作用是什么
  • 互联网Java工程师面试题·Java 总结篇·第一弹
  • Anylogic 读取和写入Excel文件
  • 茶百道全链路可观测实战
  • Java-JDBC
  • 【ROS】Nav2源码之nav2_planner详解
  • mysql报SQLSTATE[22007]的错误的一个原因