下面程序注释的一行如果去掉,没有按要求输入一个纯数字,会无限循环,请问这一行代码有什么用???
import java.util.*;
public class Test1{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
boolean continueInput=true;
do{
try{
System.out.print("Enter an integer: ");
int number=input.nextInt();
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);
}
}
import java.util.*;
public class Test1{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
boolean continueInput=true;
do{
try{
System.out.print("Enter an integer: ");
int number=input.nextInt();
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);
}
}
解决方案 »
- 新手请教个问题:怎样在JTextField里这样限制输入的字符?
- 学习java到什么程度就可以看Jpetstore那个项目了?
- 有两道超难的机试题,哪位敢进来挑战下!
- java程序如何读取远程机器上的文件内容内容?
- 请问j2sdk1.5 在哪儿能下载?
- 关于向ACCESS的数据库添加记录的问题那位大虾指点一下,谢谢.
- 菜菜的问题,jsp与j2ee是一回事不,如果不是一回事,有什么不同,没分了但也想知道
- 我应选什么模式!
- 大力推荐《java 2 编程指南 jdk1.3版》,我买了!
- 画图板代码问题
- 怎样修改一个JLable中的图片???
- linux下调用jdic使用firefox浏览器查看网页,但是总是显示空白
程序执行顺序:
import java.util.*;
public class Test1{
public static void main(String args[]){
Scanner input=new Scanner(System.in);//键盘输入
boolean continueInput=true;//设置成为true
do{
try{
System.out.print("Enter an integer: ");
int number=input.nextInt();//nextInt()这个方法是输入数字时的方法,只能输入数字
System.out.println("The number entered is" + number);
continueInput=false;//设置成为false
}catch(InputMismatchException ex){
System.out.println("try again,incorrect input:an integer is required" );
input.nextLine();//这个方法返回的是字符串String类型的,可以把输入的任何字符看成是字符串
}
}while(continueInput);//判断条件,当为true时,执行下一次循环。
}
1、假如你按要求输入数字,程序遇到do...while()时会执行其之间的语句。而这时continueInput已经成了false了,当执行到while(continueInput)时,判断不符合条件,则程序继续向下进行或者是正常退出。
2、假如你输入的不是数字而是其他的字符的话,程序从上向下只能走到:int number=input.nextInt();这一句,程序会判断输入的不是数字而出现异常,就跑到
catch(InputMismatchException ex){
System.out.println("try again,incorrect input:an integer is required" );
input.nextLine();/不加的话
}
里边去了,而不会执行:continueInput=false;这句。
就像你说的一样,假如不加这句:input.nextLine();并且呢: continueInput又为true,当while判断条件时,总是成立,所以程序总是在一直执行,永远不会停止,直到你输入的是数字。所以continueInput=false是程序的出口。