在处理用户输入时,当捕获到异常后,需要适当的清理输入流,以确保程序可以正确继续执行

问题描述

代码示例

public class Example {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (true){System.out.print("正常输入一个数字: ");int anInt = scanner.nextInt();//正常输入try {//错误输入的字符System.out.print("输入账号: ");int username = scanner.nextInt();System.out.print("输入密码: ");int passWorld = scanner.nextInt();System.out.println("账号: "+username+"密码: "+passWorld);break;} catch (Exception e) {System.out.println("非法输入,请重试");}}}
}

上面代码运行之后,错误输入字符之后。

产生原因

​ 用户输入非法字符串作为账号和密码时,会导致scanner.nextInt()方法抛出InputMismatchException异常。这个异常捕获后会进入到catch快中,输入提示。然后继续循环。

​ 由于异常每处理,输入流中的非法字符串仍然存在,下一次循环时,scanner.nextInt()会尝试读取这个非法字符串,但由于它无法转换为整数,又会抛出相同的异常。

解决方案

  1. 在catch块中添加代码来清除输入流中的非法字符串,以确保下一次输入可以正常运行,在catch块中添加scanner.next()来读取并丢弃输入流中的非法字符串,使得下一次循环可以正常进行。

  2. 使用完scanner之后直接关闭close,使用的时候再创建,当然不推荐这种方式,资源开销大。

  3. 使用的Scanner里面的hasNextInt()方法替代nextInt()方法做判断。

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

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

相关文章

Ubuntu20.04.2安装Cockpit通过web管理系统

Cockpit是一个简单易用的Web界面,让用户可以通过浏览器管理Linux服务器,支持系统监控、存储管理、网络配置和日志查看等,适合初学者和希望简化管理流程的系统管理员。目录什么是Cockpit安装启用&设为自动启动Wiki 什么是Cockpit Cockpit是一个简单易用的Web界面,让用户…

Flutter 自定义画笔案例

首先让我们来看下这张图当UI做的设计图中有这么一个元素,我想大多数人第一反应就是叫UI切图,然后直接使用Image加载,我一开始也是这么做的,毕竟省时省力省心。 但是由于后面需要针对不同的状态设置不同的颜色,我不想写过多判断语句来切换图标(我目前的做法是实现一个枚举…

IDL根据Landsat QA波段去云处理【代码】

IDL根据Landsat QA波段去云处理【代码】 ​ landsat QA波段(质量评估波段)是Landsat卫星影像数据中的一个特殊波段,他在Landsat5-9的每个产品中都存在。虽然我们常用的Landsat影像数据有B1-B7波段,但QA波段并不是其中之一。它可以反映出云、云阴影、雪等类别的像素,常…

zabbix应用教程:基于Nginx页面响应的日志监控用例

作者 乐维社区(forum.lwops.cn)许远 背景:某公司基于 Nginx 服务器搭建的网站,需要监控页面响应耗时的数据,因此该公司搭建了zabbix开源监控系统,当监控到页面响应时间超过3000ms阈值时,就进行告警通知。本文将通过日志关键字的监控来实现对页面响应时间感知,示例Zabbi…

【折腾记录】Ubuntu24.04LTS下安装Windows版微信

最近装了Win11和Ubuntu双系统,为了能更方便地和朋友交流,遂决定在Ubuntu下安装微信。 首先要去网上找教程,经过一番搜索,正当我在wine和deepin-wine之间犹豫不定之时,忽然发现了GitHub上的这个仓库zq1997/deepin-wine 据其README描述:deepin-wine环境与应用在Debian/Ubun…

cors-filter过滤器解决跨域问题

https://www.cnblogs.com/fanshuyao/cors-filter为第三方组件。 一、官网地址 http://software.dzhuvinov.com/cors-filter.html二、Springboot使用cors-filter 1、引入依赖<dependency><groupId>com.thetransactioncompany</groupId><artifactId>cors…

ThinkPHP6之Excel解析

PhpSpreadsheet解析Excel文件 安装 PhpSpreadsheet 通过 Composer 安装了 PhpSpreadsheet: composer require phpoffice/phpspreadsheet控制器 ExcelController <?phpnamespace app\controller;use think\facade\Db; use think\facade\Request; use think\facade\View; us…

腾讯云数据库认证官方的考试费是多少钱?

腾讯云的认证项目很多,包括云计算、大数据、人工智能等多个技术领域方向的认证路径,每个方向包括工程师(Associate)、高级工程师(Professional)、专家(Expert)三个不同的等级。 对于数据库方面,腾讯云的这三个级别的考试费用分别是: TCCA工程师:1200元 TCCP高级工程师:18…

P3043 [USACO12JAN] Bovine Alliance G 题解

P3043 [USACO12JAN] Bovine Alliance G 题目传送门 思路 首先分情况讨论每种联通块的可能,有三种不同的情况会对答案 \(ans\) 产生不同的贡献。 联通块有环如图,因为每条边都有要有归属,所以环上的边只能全都顺时针或逆时针属于某个点,且不在环上的点仅有一种可能。 因此该…

组合数学学习笔记(持续完善中)

基础知识 一、加法原理 完成某个工作有 \(n\) 类办法,第 \(i\) 类办法有 \(a_i\) 种,则完成此工作的方案数有 \(\sum\limits _{i=1}^n a_i\) 种。 二、乘法原理 完成某个工作有 \(n\) 个步骤,第 \(i\) 个步骤有 \(b_i\) 种,则完成此工作的方案数有 \(\prod\limits _{i=1}^n…

Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)

Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载) 适用于 macOS Ventura 和 macOS Monterey 的 Safari 浏览器 17 请访问原文链接:https://sysin.org/blog/apple-safari-17/,查看最新版。原创作品,转载请保留出…

Gartner 魔力象限:安全信息和事件管理 (SIEM) 2024

Gartner Magic Quadrant for Security Information and Event Management 2024Gartner Magic Quadrant for Security Information and Event Management 2024 Gartner 魔力象限:安全信息和事件管理 2024 请访问原文链接:https://sysin.org/blog/gartner-magic-quadrant-siem-…