package ex13;
import java.util.*;public class InputMismatchExceptionDemo {
public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner input=new Scanner(System.in);
boolean continueInput=true;
do{
try{
System.out.print("Enter an integer: ");
int number=input.nextInt();
//Display the result
System.out.println("The number entered is "+number);
continueInput=false;
}
catch(InputMismatchException ex){
System.out.println("Try again.("+
"Incorrect input:an integer is required");
//input.nextLine();这句注释掉就会有死循环,不得其解
}
}while(continueInput);
}}input.nextLine();注释掉会陷入死循环中
input.nextLine();这句不是有键盘输入一行字符串吗,在这里有什么作用
解决方案 »
- java写的小游戏
- java打印的对话框调了上下页边距,但打印出来后不是这个距离
- tomcat服务器只能用如IP(如172.16.45.84)打开,不能用localhost打开
- 为什么在JSP中存取CLOB字段要用流方式处理
- 怎样分割一个编码为gb2312的string?
- 求大家给我指点一下,为什么我的if...else...没有用呢?
- 新手求教:关于JTable刷新的问题的问题的问题
- m$的J#是干什么用的?和传统的java的关系?
- 为什么executeBatch执行出来显示No row count was produced from executeBatch
- jni中如何返回一个类的实例来作为多个参数的返回?急
- 新手的swing问题!求真理
- Java流的问题
而用了input.nextLine();就能消掉这些非整数
而如果没有就一直有异常,就没玩没了了
①nextInt如果没有读取到整数,一方面报异常,另一方面,输入流中的指针不会后移
②catch中如果没有nextLine,则输入流中的指针依然不后移
③do...while循环上去的时候,重新nextInt,因为输入未变,故依然报异常... 死循环形成catch中加了nextLine时,事情是这样的:
① (未变)
②catch中nextLine将当前行一直到回车换行符的内容读去,输入流执行下一行
③do...while重新nextInt,但试图读入下一行,如果用户依然不输入整数,才会再报异常。(不会立即形成死循环)