Java里清空缓冲区的方法
来源:互联网 发布:魔侠传 网络导常检测 编辑:程序博客网 时间:2024/05/23 22:06
在做Java异常处理的练习的时候,有这样的要求:
对一个int型变量进行输入,如果输入的不是整数,则继续输入,直到输入了整数,就打印出来
想法是这样的:使用Scanner的nextInt时,如果输入的是一个字符的话,那么会有InputMismatchException异常产生,那么我使用一个while(true)循环,在循环中输入的时候捕获该异常,如果没有异常,那么就是说nextInt能够获取到正确值,那么下一句直接break结束循环,然后打印输出;如果捕获到异常,那么继续循环。
实际运行的时候发现,如果输入了字符,结果会一直输出异常信息(在catch中加入了printStackTrace),想了想,大概和C中类似,输入缓冲区中的字符不能正常获取,所以“卡”在那里,那么如何清空输入缓冲区呢,,C下可以使用fflush(stdin)的方式,Java下没有呀,后来误打误撞想到,使用Scanner的时候传入了System.in,那如果我再new一个Scanner,再传一次的话,会不会就是新的了呢?没想到还真成了。。。
下面是代码:
int a = 0;Scanner sc = new Scanner(System.in);while (true) {try {a = sc.nextInt();break;} catch (InputMismatchException ime) {//ime.printStackTrace();//sc.close();sc = new Scanner(System.in);}}System.out.println(a);sc.close();
2014.08.04后记:
再一次用到这段代码的时候,又出了NoSuchElementException异常
非常奇怪,如果把catch中的sc.close();去掉就没了。。。
好奇怪~~
0 0
- Java里清空缓冲区的方法
- Java通道方法写文件中缓冲区建立的原则
- Java 字符串和字符串缓冲区的常用方法
- Java清空输入缓冲区的一种方法
- 缓冲区溢出的保护方法
- 清空缓冲区的方法
- Linux下清空缓冲区的方法
- 避免缓冲区溢出的方法
- scanf清除缓冲区的方法
- Linux下清空缓冲区的方法
- Java的缓存与缓冲区
- java nio中buffer缓冲区一些方法
- 清空输入缓冲区的方法
- 清空输入缓冲区的方法
- IO流缓冲区的读写方法
- arcgis缓冲区获取的外边界方法
- 避免缓冲区溢出攻击的方法
- 基于环形缓冲区的deque实现方法
- LA 4597 网络流【有上下界】
- QT之Q_OBJECT
- 连续多次进入使用了MJRefresh的页面应用会崩 An instance 0xdb48a00 of class UITableView was deallocated while key value
- except切忌和pass搭配使用
- .NET多线程
- Java里清空缓冲区的方法
- UVA 490 Rotating Sentences
- CentOS常用文件操作命令[百度博客搬家]
- 关于make menuconfig
- MATLAB GUI 之 列表框 属性 ‘string’ 元胞存储
- 选择排序
- c语言实现hashtable,类似C++的map和iOS的NSDictionary
- Linux服务器中限制FTP用户访问方式
- 调试时源文件与模块生成时的文件不同