scanner中InputMisMatchException处理

2023-11-15

我们知道在使用scanner进行控制台输入时候,使用next()方法输出,但是这种方法存在弊端,比如你使用nextInt()方法,但是输入一个字符串类型,就会抛出InputMisMatchException异常。

首先来看一下scanner在jdk中的一些方法:

 

String next()
查找并返回来自此扫描器的下一个完整标记。
String next(Pattern pattern)
如果下一个标记与指定模式匹配,则返回下一个标记。
String next(String pattern)
如果下一个标记与从指定字符串构造的模式匹配,则返回下一个标记。
BigDecimal nextBigDecimal()
将输入信息的下一个标记扫描为一个 BigDecimal
BigInteger nextBigInteger()
将输入信息的下一个标记扫描为一个 BigInteger
BigInteger nextBigInteger(int radix)
将输入信息的下一个标记扫描为一个 BigInteger
boolean nextBoolean()
扫描解释为一个布尔值的输入标记并返回该值。
byte nextByte()
将输入信息的下一个标记扫描为一个 byte。
byte nextByte(int radix)
将输入信息的下一个标记扫描为一个 byte。
double nextDouble()
将输入信息的下一个标记扫描为一个 double。
float nextFloat()
将输入信息的下一个标记扫描为一个 float。
int nextInt()
将输入信息的下一个标记扫描为一个 int。
int nextInt(int radix)
将输入信息的下一个标记扫描为一个 int。
String nextLine()
此扫描器执行当前行,并返回跳过的输入信息。
long nextLong()
将输入信息的下一个标记扫描为一个 long。
long nextLong(int radix)
将输入信息的下一个标记扫描为一个 long。
short nextShort()
将输入信息的下一个标记扫描为一个 short。
short nextShort(int radix)
将输入信息的下一个标记扫描为一个 short。

我们可以看到基本上每种类型的数据都有对应的方法,如果控制台输入的与你设置的不匹配,就会出现异常。

Scanner sc=new Scanner(System.in);

System.out.println("向控制台输入一个整数类型的数据");

sc.nextInt();

拿上面这个来举例说明,当你在控制台输入时,虽然有提示让用户输入整数类型的数据,但是用户万一输入其他的类型就会抛出异常,这就违反了java的健壮性,因为一点小错误,就导致整个系统都停止了,所以我们需要通过异常处理来解决,那么怎么解决呢

思路:利用try-catch捕获异常,每次输入不匹配的时候我们就抛出一个提示,让其重新输入,直到输入正确的数据类型为止。

import java.util.Scanner;

public class scannerTest {
		 
	    static Scanner input = new Scanner(System.in);
	 
	    public static void main(String[] args) {
	        while (true) {//设置一个死循环
	            try {
	                acceptPrint();//当输入正确数据后,执行break语句,跳出循环
	                break;
	            } catch (Exception e) {	  
	                input = new Scanner(System.in);
	            }
	        }
	    }
	 
	    public static void acceptPrint() {
	        System.out.println("请输入一个整数:");
	        int temp = input.nextInt();
	        System.out.println(temp);
	    }
	}

我们运行后发现,如果你输入的不是int型的,就会一直提示让你输入,直到输入正确为止。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scanner中InputMisMatchException处理 的相关文章

随机推荐

  • YOLO v5算法详解

    1 YOLO v5网络结构 2 输入端 3 Backone网络 4 Neck网络 5 Head网络 1 YOLO v5网络结构 图 1 YOLO v5网络结构图 由上图可知 YOLO v5主要由输入端 Backone Neck以及Predi
  • 列表元组字符串是python的什么系列_Python 序列(字符串、列表、元组)概述

    在 Python 中有六种基本数据类型 即数字 包括整形 长整 浮点 字符串 列表 元组 字典和布尔类型 其中 字符串 列表 元组被称之为序列 因为它们有着相同的访问模式 它们的每一个元素可以通过指定一个偏移量的方式得到 而多个元素可以通过
  • upload-labs 第四关-第九关闯关方法

    Pass 04 1 打开靶机 点击查看提示 发现这是一个 htaccess绕过 2 写入一个 htaccess的文件 文件内容如下 3 将文件修改为 htaccess的文件 4 上传文件 5 新建一个文本文档 内容如下 6 将文件类型修改为
  • [k8s]k8s架构图解

    k8s架构图解 启动参数及证书梳理 master端必须要装flannel 注 flannel网络能确保各节点间 Pod 网段实现互通 master 节点与 node 节点上的 Pods 通过 Pod 网络通信 所以需要在 master 节点
  • 搜索算法——爬山法

    不断更新中 一 爬山算法 爬山算法是一种简单的贪心搜索算法 该算法每次从当前位置的临近空间中选择一个最优解作为当前解 直到达到一个局部最优解 爬山算法可以类比成一个有失忆的人在浓雾中爬山 这里就揭示了爬山算法的两个问题 失忆 就是说这个人不
  • decode函数_decode函数的妙用

    如下这张表 包含id和name两列 其中id是主键 name允许为空 存在两条记录 一条是 id 1 name a 另一条是 id 2 name SQL gt create table emp id number primary key n
  • MySQL-数据库读写分离(中)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • 基于iView-Cascader的多选级联选择器:cascader-multi

    前言 iview的cascader 多级联动虽然可以实现多级联动 但是不支持多选 这里 cascader multi 可以支持多选功能 实现效果 真实效果和他有出入 这是网上找的好看的动图 实现步骤 1 安装 npm i cascader
  • 求解集合A和集合B的差集

    求解集合A和集合B的差集 题目 已知集合A和B的元素分别用不含头结点的单链表存储 函数difference 用于求解集合A与B的差集 并将结果保存在集合A的单链表中 例如 若集合A 5 10 20 15 25 30 集合B 5 15 35
  • 关于vue-cli 3版本做的改动,没有static文件夹,本地文件应放在哪儿,如何引用

    2 x版本 3 0版本 原来放在static下的文件 现在应该放在public文件夹下 原来的请求数据的写法 现在的写法 总结 vue3 0 对脚手架的结构和静态文件的引用方式都进行了简化
  • 字符流字节流相互转换

    1 字节输出流转换成字符输出流 写到硬盘 创建字节输出流 FileOutputStream fis new FileOutputStream E document aaa txt 字节输出流转换成字符输出流 OutputStreamWrit
  • 使用Python办公自动化:将文本与图表写入到PPT中

    使用Python办公自动化 将文本与图表写入到PPT中 其中含有写入文本 表格及图表到PPT中的一些常用函数 还含有一些对单元格的操作函数 代码如下 import pptx from pptx util import Inches from
  • 模型视图投影矩阵传递

    11
  • mysql 批量插入更新数据 的 两种方法

    有时会有这种需求 当符合某种条件的数据存在时 去修改它 不存在时 则新增 也就是saveOrUpdate操作 当没有的时候就是插入语句 有数据的时候判断主键和唯一索引是否一样 一样那就按照 ON DUPLICATE KEY UPDATE写的
  • 安装raw文件下的apk文件

    有时候我们需要将一些小软件嵌在我们的软件里面 那么我们就可以将这些apk放在我们的raw或者assets文件下进行暂时存储 那么下面我们用放在raw文件下进行展示安装这一过程 首先我们要把我们需要隐藏我apk文件放在raw文件下 raw是在
  • Dirichlet distribution狄利克雷分布

    狄利克雷分布 狄利克雷分布 维基百科 是一组连续多变量概率分布 是多变量普遍化的B分布 为了纪念德国数学家约翰 彼得 古斯塔夫 勒热纳 狄利克雷 Peter Gustav Lejeune Dirichlet 而命名 狄利克雷分布常作为贝叶斯
  • [1036]Jadx gui(JAVA反编译工具)

    github https github com skylot jadx Jadx gui是一款JAVA反编译工具 一个简单轻巧的 DEX 到 Java 反编译器 可让您导入 DEX APK JAR 或 CLASS 文件并将其快速导出为 DE
  • 实时数据库,内存数据库,关系型数据库比较

    内存数据库 内存数据库就是将数据放在内存中直接操作的数据库 它利用内存的读写速度比磁盘快 内存是随机访问而磁盘是顺序访问这两个特点 将数据保存在内存中 在内存中模仿建立表结构和索引结构并针对内存特性进行优化 相比从磁盘上访问 内存数据库访问
  • 集成电路设计开源EDA软件yosys详解1:工具安装

    yosys为一套开源的针对verilog的rtl综合框架 从本节开始将详细介绍工具的使用 并详细对源代码进行分析和讲解 首先介绍一下工具的安装和使用 yosys的git网址为https github com YosysHQ yosys 下面
  • scanner中InputMisMatchException处理

    我们知道在使用scanner进行控制台输入时候 使用next 方法输出 但是这种方法存在弊端 比如你使用nextInt 方法 但是输入一个字符串类型 就会抛出InputMisMatchException异常 首先来看一下scanner在jd