解决Java的InputMismatchException异常

一、写在前面

InputMismatchException异常是输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配。

二、异常的出现原因

在使用Scanner进行输入时,报出InputMismatchException异常,其代码如下:

public static void main(String[] args)
    {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个数字:");
		int x=sc.nextInt();
		System.out.println("请输入一个字符串:");
		String str=sc.nextLine();
		System.out.println("请再输入同一个数字:");
		int y=sc.nextInt();
    }

产生InputMismatchException异常的原因是:nextLine()不能用在nextInt后面。因为nextLine()方法是返回的是Enter键之前的所有字符,在使用了nextInt() 方法之后在其后输入的空格键、Tab键或Enter键等视为分隔符或结束符,其仍在缓冲区内;若紧接着使用nextLine() ,则nextLine() 自动读取Enter等作为其结束符,则无法从键盘输入值,强行输入会报出InputMismatchException异常。

三、异常的解决

方法一:

我们可以在nextInt()后面加上一个nextLine()用于过滤其后面的Enter等结束符。

方法二:

我们可以不使用nextLine()方法,直接使用next()方法代替。

其修改代码如下:

public static void main(String[] args)
    {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个数字:");
		int x=sc.nextInt();
		sc.nextLine();//方法一
		System.out.println("请输入一个字符串:");
		String str=sc.nextLine();//String str=sc.next();为方法二
		System.out.println("请再输入同一个数字:");
		int y=sc.nextInt();
    }

PS:eclipse使用小技巧:

在eclipse中我们可以直接打出 syso后再按住 Alt+/ 就可以直接写出输出语句

System.out.println("");

到此这篇关于解决Java的InputMismatchException异常的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java 异步线程监听与结果回调及异常捕获总结分析

    前言 工作中是否遇到这样的场景? 1.需要异步线程执行,而且需要获取到线程执行返回的结果. 2.如果执行过程异常,可以按照自定义方式消费异常信息. 如果只是单纯的使用Callable可以实现,本文提供更加优雅的工具类. Maven依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.15</ver

  • springboot解决java.lang.ArrayStoreException异常

    idea工具使用 Java Exception Breakpoint 添加异常断点,在IDE里,新建一个断点,类型是Java Exception Breakpoint 当断点起效时,查看AnnotationUtils.findAnnotation(Class<?>, Class<A>, Set<Annotation>) line: 686 函数的参数. 可以发现 clazz是 class com.github.pagehelper.autoconfigure.Mappe

  • Spring Boot深入排查 java.lang.ArrayStoreException异常

    java.lang.ArrayStoreException 分析 这个demo来说明怎样排查一个spring boot 1应用升级到spring boot 2时可能出现的java.lang.ArrayStoreException. demo地址:https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-ArrayStoreException demo里有两个模块,springboot1-starter和springboot

  • Java异常类型介绍及处理方法

    前言: Java异常,大家都很熟悉.但是对于具体怎么分类的,JVM对其怎么处理的,代码中怎么处理的,应该怎么使用,底层怎么实现的等等,可能就会有些不是那么清晰.本文基于此详细捋一下异常类型,实现以及使用时应怎么注意. 一.异常实现及分类 先看下异常类的结构图 上图可以简单展示一下异常类实现结构图,当然上图不是所有的异常,用户自己也可以自定义异常实现.上图已经足够帮我们解释和理解异常实现了: 1.所有的异常都是从Throwable继承而来的,是所有异常的共同祖先. 2.Throwable有两个子类

  • Springboot项目出现java.lang.ArrayStoreException的异常分析

    参考文献:https://www.jb51.net/article/232858.htm 使用springboot 2 构建项目,调试代码的时候出现了如下的报错信息 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/sp

  • Spring Boot2深入分析解决java.lang.ArrayStoreException异常

    将某个项目从Spring Boot1升级Spring Boot2之后出现如下报错,查了很多不同的解决方法都没有解决: Spring boot2项目启动时遇到了异常: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExcep

  • Java Springboot全局异常处理

    目录 前言 一.思路? 二.步骤 1.自定义接口: 2.自定义错误枚举 3.自定义异常类 4.异常捕获 5.在代码中抛异常 总结 前言 对于作为菜鸟程序员的我来说,经常在controller使用try-catch 来包裹住我的service层代码,首页,他及其的不好看,其次,每个方法都有这种代码块,思考有没有办法去掉它,并且优雅的处理异常.这就是今天要说的全局异常捕获 提示:以下是本篇文章正文内容,下面案例可供参考 一.思路? springboot提供了全局异常处理的注解,我们需要弄明白的是.扑

  • 解决Java的InputMismatchException异常

    一.写在前面 InputMismatchException异常是输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配. 二.异常的出现原因 在使用Scanner进行输入时,报出InputMismatchException异常,其代码如下: public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个数字:"); int x=sc.next

  • 解决java.util.NoSuchElementException异常的问题

    java.util.NoSuchElementException 报错的行数是一个scnner的next,本来和老师讨论了半天没有什么头绪,错误的原因是,因为找不到下一个元素,然后,如果把上一个函数中操作system.in的函数注释掉,就不会出现问题. 后来,老师一问,就是因为在上面函数的时候,我将system手动关闭掉了,系统资源不同于文件,一旦关闭就不能再打开,这就是问题的原因. 系统资源一旦释放就不能再开启了,所以只有确定不在使用系统的时候,才能将流关闭. 补充知识:对于springboo

  • java.net.MalformedURLException异常的解决方法

    java.net.MalformedURLException at java.net.URL.<init>(URL.java:619) at java.net.URL.<init>(URL.java:482) at java.net.URL.<init>(URL.java:431) 代码中URL url = new URL(someUrl);这一行出现java.net.MalformedURLException异常 解决方法是,对someUrl中的参数名和参数值都URL

  • java 出现Zipexception 异常的解决办法

    java 出现Zipexception 异常的解决办法 1 异常描述 在从 SVN 检出项目并配置完成后,启动 Tomcat 服务器,报出如下错误: 2 异常原因 通过观察上图中被标记出来的异常信息,咱们可以知道 Java.util.zip.ZipException: error in opening zip file 此异常,为:打开zip文件异常. 实际上,咱们观察错误信息的上面一行,即警告部分的时候,就可以发现引起这个异常发现的原因很可能就是位于 Tomcat 安装文件目录中lib文件夹下

  • 实例解决Java异常之OutOfMemoryError的问题

    在Java虚拟机规范描述中,除了程序计数器外,虚拟机内存的其他几个运行区域都有发生 OOM 异常的可能.在这里,用代码验证各个运行时区域存储的内容并讨论该如何进行处理. Java堆溢出 Java 堆用于存储对象实例,只要不断创建对象,并且保证 GC Roots 到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么对象数量达到最大堆的容量限制之后就会产生内存溢出异常. 异常再现 代码采用如下虚拟机参数: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryErr

  • 详解Java中NullPointerException异常的原因详解以及解决方法

    NullPointerException是当您尝试使用指向内存中空位置的引用(null)时发生的异常,就好像它引用了一个对象一样. 当我们声明引用变量(即对象)时,实际上是在创建指向对象的指针.考虑以下代码,您可以在其中声明基本类型的整型变量x: int x; x = 10; 在此示例中,变量x是一个整型变量,Java将为您初始化为0.当您在第二行中将其分配给10时,值10将被写入x指向的内存中. 但是,当您尝试声明引用类型时会发生不同的事情.请使用以下代码: Integer num; num

  • 解决java.lang.ClassCastException的java类型转换异常的问题

    在项目中,需要使用XStream将xml string转成相应的对象,却报出了java.lang.ClassCastException: com.model.test cannot be cast to com.model.test的错误. 原因: 项目中应该是采用了热部署,devtools,因为累加载器的不同所以会导致类型转换失败 措施: 在pom.xml中将以下代码注释掉: <dependency> <groupId>org.springframework.boot</g

  • 详解Java删除Map中元素java.util.ConcurrentModificationException”异常解决

    今天在使用map并需要根据某些条件删除map元素时,自然而然想到调用Map中的remove(Object key)函数进行删除,代码如下: //遍历map,如果key<5,那么就删除此元素. Map<Integer, Integer> users = new LinkedHashMap<Integer, Integer>(); for (Map.Entry<Integer,Integer> entry : users.entrySet()){ for (int i

随机推荐