一、问题描述

今天,朋友问我一个问题,他小弟在使用Scaner获取输入的时候,报了个异常,问题如下:

Exception in thread "main" java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:819)at java.util.Scanner.next(Scanner.java:1431)at java.util.Scanner.nextInt(Scanner.java:2040)at java.util.Scanner.nextInt(Scanner.java:2000)at com.test.other.Test.main(Test.java:14)

二、问题重现

他给了我代码,我大概看了一下,自己写了个问题代码,详细代码如下:

public class Test {public static void main(String[] args) {int firstNum = 0; //一个int类型的变量,默认值为0int SecondNum = 0;//一个int类型的变量,默认值为0Scanner input = new Scanner(System.in);//获取一个输入源System.out.println("please input First Number");//提示firstNum = input.nextInt();System.out.println("please input Second Number");//提示SecondNum = input.nextInt();}
}

运行结果:

please input First Number
2
please input Second Number
3
Exception in thread "main" java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:819)at java.util.Scanner.next(Scanner.java:1431)at java.util.Scanner.nextInt(Scanner.java:2040)at java.util.Scanner.nextInt(Scanner.java:2000)at com.test.other.Test.main(Test.java:14)

三、查找原因

InputMismatchException,查看源文档

public class InputMismatchException
extends NoSuchElementExceptionThrown by a Scanner to indicate that the token retrieved does not match the pattern
for the expected type, or that the token is out of range for the expected type.Since:1.5
See Also:Scanner, Serialized Form

Thrown by a Scanner to indicate that the token retrieved does not match the pattern for the expected

type, or that the token is out of range for the expected type.

大概意思就是:这个异常由Scanner抛出,表明检索到的令牌不匹配期望类型的模式,或者该标记超出预期类型的范围。(我读出来一个东西,不是你告诉我的要读的类型,不知道是什么类型,反正我没预计到会有这么一个类型)

结合我们这里翻译就是:你告诉我要读一个int,结果我读出来的不是一个int类型的数据。

四、代码跟踪

这里我们去看一下Scanner到底读到了什么。我们Debug模式跟进一下:

开始的时候(缓存区为空)

第一次输入一个2

第二次输入一个3

五、总结问题

预计问题发生原因,第二次读取的时候获取到了hb[3]这个位置的数据

通过下面,我们更加直观的看见,缓存中hb[3]为空格字符

 很明显,空格转int肯定会报错。

六、深度分析

那么,这个空格是怎么回事呢?我们到其上一层看一下


 在这里我们看见,2后面明显3多了一点东西(其实就是一个空格),这个东西是怎么多的,我们先不管(因为我也还没找到原因),但是在这里,我们可以看见这个空格是在第一行的,也就是说,我们第二次读取的时候,是从第一行的2后面开始的,具体有没读到第二行,我们还不清楚,但是我们清楚的是nextInt()读取之后,焦点依旧会停留在上一行,不会从第二行开始读取。这就牵涉到Scanner各种读取方式的焦点是否会换行的问题。这些问题就大家自行查找了吧。

少年易学老难成,一寸光阴不可轻。

—— 与诸君共勉

Java Scaner小问题相关推荐

  1. in java中文版百度云 thinking_小程序订阅消息推送(含源码)java实现小程序推送,springboot实现微信消息推送...

    前面写过一篇云开发实现小程序订阅消息(模板消息)推送的文章,<借助云开发实现小程序订阅消息和模板消息的推送功能>是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序 ...

  2. vue小米商城源代码_微信商城信息管理系统(java后台+小程序)

    前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...

  3. 分享几个Java面试小技巧,建议收藏!

    Java可谓编程界的元老,其资深地位无人撼动.那么学习Java的你,在面试时过五关斩六将还顺利吗?通常来讲,程序员的逻辑思维很清晰,在表达自我方面直接,但这在面试中可行不通,毕竟面试涉及到人际交流,所 ...

  4. Java web小项目_个人主页(2)—— 边缘加速原理与实现

    摘自:Java web小项目_个人主页(2)-- 边缘加速原理与实现 作者:丶PURSUING 发布时间: 2021-03-27 14:44:40 网址:https://blog.csdn.net/w ...

  5. Java web小项目_个人主页(1)—— 云环境搭建与项目部署

    摘自:Java web小项目_个人主页(1)-- 云环境搭建与项目部署 作者:丶PURSUING 发布时间: 2021-03-26 23:59:39 网址:https://blog.csdn.net/ ...

  6. Java一个小练习----String类型转换int类型

    Java一个小练习 把字符串str分割程String数组,然后转换成int数组,排序 String str = "123 345 89 93 2 6573 223" 然后在拼接成一 ...

  7. java游戏暂停弹出字体_小白写了个java的小游戏 想加个暂停的功能 无从下手 求大佬们帮...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一次写java的小游戏 想实现点击右下角的暂停 实现游戏的暂停和继续 不知道该怎么加,自己找了线程的内容但试了还是成功不了,求大佬们帮一下小白.代码有点 ...

  8. java transferto_小六六学Netty系列之Java 零拷贝

    前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩qq了 ...

  9. 用JAVA制作小游戏——飞机大战(三)

    本篇博客是对飞机大战游戏项目完整代码的展示 详细代码讲解: 用JAVA制作小游戏--飞机大战(一) 用JAVA制作小游戏--飞机大战(二) 最下方附整个程序的文件下载链接 代码展示 主界面 impor ...

最新文章

  1. C#图片处理示例(裁剪,缩放,清晰度,水印)
  2. python3安卓版下载-QPython3H安卓运行Python神器
  3. SQLserver单表数据导入导出
  4. 预测分析:R语言实现2.6 特征选择
  5. linux KVM win虚拟机磁盘扩容(qcow2)
  6. xshell 5如何选中即复制,右键即粘贴
  7. ARM指令寻址方式之: 数据处理指令的寻址方式
  8. Spring Cloud Gateway-ServerWebExchange核心方法与请求或者响应内容的修改
  9. IOS15给UICollection添加测试数字
  10. 我不想再活在别人的世界里
  11. Facebook哭晕在厕所,调查显示用VR体验社交的用户仅为19%
  12. VGGNet原理和实现
  13. 五分钟搭建一个MarkDown文档解析器
  14. 驰骋工作流-表单设计-从表多表头-功能讲解
  15. DEV CPP中使用Clang
  16. PDF文件怎么转换成Excel表格?学会这个方法轻松转换。
  17. 通信标准2之PUSCH非动态传输 Configured Grant Type 1 和 Type 2
  18. Linux 发展史小览
  19. FaceNet 读书笔记
  20. 电影评论分类(python深度学习——二分类问题)

热门文章

  1. 一名测试工程师的苦逼感想
  2. vue.js django_如何使用Django和Vue.js对Web应用程序进行原型制作
  3. Activiti Designer申请请假流程
  4. 超级准确的Android/JAVA面试题合集,背会你就10k!
  5. 记录LeetCode处女作
  6. 每秒上万并发下的Spring Cloud性能优化之道
  7. 个人理财有哪些基本原理和方法?——知乎李东旭
  8. 基于移动终端的大学生心理健康交互管理系统的研究与设计
  9. 数学之英文写作——基本中英文词汇(一般术语、算术与代数的常用词汇)
  10. 苹果手机升级13无法开机_苹果手机无法开机的解决方法