java中检测输入是否合法的方法
public class TestInput {public static void main(String[] args) {System.out.println("请输入一个整数:");int num = 0;while (true) {Scanner input = new Scanner(System.in);if (input.hasNextInt()) {num = input.nextInt();break;} else {System.out.println("你的输入有误,请重新输入一个整数:");}}System.out.println(num);}
}
请输入一个整数:
0.3
你的输入有误,请重新输入一个整数:
sdad
你的输入有误,请重新输入一个整数:
sdadadade
你的输入有误,请重新输入一个整数:
.;'
你的输入有误,请重新输入一个整数:
1.23.
你的输入有误,请重新输入一个整数:
2
2
最近java输入的时候,经常碰到输入不合理引发的潜在bug,于是写了一个检测java输入是否合法的方法;其他类型输入应该类似。不清楚为什么每次都要在while循环中每次都要new一个scanner类。。但是不这样就一直循环“请重新输入一个整数”。。。
在一番探索后,并且看到了一位大佬的博客,获得了些许启发,Java中Scanner用法总结_Megustas_JJC的博客-CSDN博客_java scanner 可能像大佬所写,输出完的回车键,被next()收留了下来,所以导致了后边的结果,于是我对我的代码做了修改。
public class TestInput {public static void main(String[] args) {int[] a = new int[5];System.out.println("请输入一个整数:");Scanner input = new Scanner(System.in);for (int i = 0; i < a.length; i++) {if (input.hasNextInt()) {a[i] = input.nextInt();// break;} else {System.out.println("你的输入有误,请重新输入一个整数:");String string = input.next();i--;}}System.out.println(Arrays.toString(a));}
}
经测试,这段代码不会出现任何问题,并且将new scanner 也放到了循环体外边,在用debug调试的过程中我发现 了每次输出的“你的输出有误。。。。”这一句话,像一个孤儿一样没人收留,到了后边的循环貌似是被后来的if (input.hasNextInt())判断为不符合条件还是怎么样?于是又在输出else循环体。所以使用了一个input.next()将这句话装进去,让这个孤儿有了家。所以后边的循环变得正常了。
java中检测输入是否合法的方法相关推荐
- 在Java中实现单例模式的有效方法是什么? [关闭]
在Java中实现单例模式的有效方法是什么? #1楼 我使用Spring框架来管理我的单身人士. 它不会强制类的"单一性"(如果涉及多个类加载器,您将无法真正做到),但是它提供了一种 ...
- java某个类避免findbug检查_Findbugs能否在java中检测到捕获RuntimeException?
你能不能让我知道Findbugs可以在 java中检测到catcing RuntimeException吗? 有效的java建议我们不要捕获RuntimeException. 所以我想知道Findbu ...
- java中 下列不合法的语句_在Java中,下列( )是不合法的赋值语句。_学小易找答案...
[多选题]75. 垂直角观测的步骤是( ). [多选题]139. 属于真误差的是( ). [多选题]160. 导线观测数据有( ). [单选题]145.水准测量时,长水准管气泡居中明 ( ). [单选 ...
- 在java中如何输入_java如何输入
❶ java 如何从键盘上接受输入 public class import { public static void main(String[] args) { System.out.println( ...
- Java中如何输入一个字符串
Java中如何输入一个字符串 首先需导入java.util包中的Scanner类,如图: 接着在main里创建Scanner类对象,记得要把System.in加上这是专门获取用户输入的内容的,它会交给 ...
- 【转】Java中获取文件大小的正确方法
[转]Java中获取文件大小的正确方法 本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明.由于本人不定期会整理相关 ...
- Java中图形界面重绘方法
** Java中图形界面重绘方法 ** 在我们编写图形界面程序的过程中,我们就会发现,当我们将窗体拉伸,缩小(或者最大化最小化)的时候,之前在窗体上画的图形会消失了. 这是为什么呢? 1)原来 ...
- java中的五种排序方法_用Java排序的五种有用方法
java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...
- java中 下列不合法的语句_在Java中,下列( )是不合法的赋值语句。_学小易找答案...
[多选题]一个国家一定时期的商品销售额属于? [单选题]某厂2007年完成产值200万元,2008年计划增长10%,实际完成231万元,超额完成计划? [多选题]我国GDP每增长1%,相当于人均增加收 ...
最新文章
- 剑指offer_第8题_跳台阶
- Spring起步(一)Building a RESTful Web Service
- sklearn做交叉验证
- 软件项目第一次Sprint评分表
- 计算机系统的发展史、基本组成、工作原理
- Py之PyMySQL:Python库之PyMySQL的简介、安装、使用方法之详细攻略
- HandlerAdapters
- 【今日CS 视觉论文速览】 27 Dec 2018
- jQuery事件绑定
- “技术驱动创新”正成为企业发展新方向,开发者该如何修炼自己?
- linux 实时查看日志 最新最后100行 tail
- 自从有了计算机和网络才有信息技术,2015年信息技术会考模拟选择题6(俞同明版)...
- c语言程序运行的单词翻译,c语言常见英语词汇带翻译
- web——html个人简历
- idea导入导出 settings 设置文件
- css制作类似优惠券的卡片样式(vue)
- 心动的本质是什么_风动,幡动,仁者心动,到底是什么在动
- 数据分析 - 9.MECE法(学习笔记)
- 合工大现代企业管理期末报告--阿里巴巴企业管理模式探究
- system.invalidoperationexception:“connectionstring 属性尚未初始化。问题的解决方式
热门文章
- 自动行尾包装行业调研报告 - 市场现状分析与发展前景预测
- Top-1 Accuracy和Top-5 Accuracy
- 关于SEO的一些介绍
- Decoupling Representation and Classifier for Long-Tailed Recognition论文笔记
- php表格增加一行数据,““vb中数据库内容输出到excel如何把表格第一行合并添加一个大标题...
- RESTART-Axu1
- 306-置换策略OPT算法的实现
- 一元三次方程重根判别式_一元三次方程的根的探究
- 《健身入门学》第二课,肌肉生理生化基础(一)
- Mac不能写入U盘的解决方法