下面程序注释的一行如果去掉,没有按要求输入一个纯数字,会无限循环,请问这一行代码有什么用???
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);
}
}

解决方案 »

  1.   

    input.nextLine();//这一行的作用是把改行都拿掉。input.nextInt();这样就不会被前面未匹配的字符干扰。
      

  2.   

    input.nextLine();我的理解是让下一次调用input的时候读取下一行输入的内容,而不受第一个回车输入内容的影响,如果下一行没有输入内容,需要再输入一次。要不让input.nextInt();永远读取的是第一次输入的错误的内容,当然会无限循环下去。
      

  3.   

    哥们,你看我这样说,对吗?
    程序执行顺序:
    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是程序的出口。
      

  4.   

    1楼正解,如果不加input.nextLine();程序读入的将永远是上一行未匹配的字符,try语句块会一直被执行,continueInput永远都不可能为true。程序也就进入死循环了
      

  5.   

    如果不加input.nextLine();程序读入的将永远是上一行未匹配的字符,try语句块会一直被执行,continueInput永远都不可能为true。程序也就进入死循环了