如何让这个程序接受另一个输入?

时间:2013-03-11 02:06:28

标签: java try-catch

我对这条线发表评论。为什么那条线不会再接受其他输入?然后继续重复,直到输入一个整数。

import java.util.*;

class ScanNumbers{

   public static void main(String[] args){

      Scanner scan = new Scanner(System.in);

      int[] NumberEntry = new int[6];

         for (int i = 1; i < NumberEntry.length; i++){

            boolean isInteger = false;

            while (!isInteger){

            try {
                System.out.print("Entry " +i + "/5, enter an integer value: ");
                NumberEntry[i] = scan.nextInt();
               isInteger = true;
             }

            catch (Exception e){
               System.out.print("Entry " +i + "/5, Please enter only an integer value: ");
               NumberEntry[i] = scan.nextInt(); //Right here, I would like to ask again, why is this line not doing the job?
            }
         }
      }
         Arrays.sort(NumberEntry);
         System.out.print("The max integer is: " +  + NumberEntry[NumberEntry.length-1]);
   }
}

我不能告诉它再试一次吗?

编辑1:哈哈,哦,我的,谢谢,我已删除了该行,但现在输出不断重复“输入1/5,输入一个整数值:”

编辑2:谢谢!现在工作正常!

1 个答案:

答案 0 :(得分:5)

发生的事情是无效输入被保存在扫描仪中。您必须跳过输入,以便可以返回接受有效数据。如果不这样做,异常将一遍又一遍地被捕获。还有一种更简单的方法来做你想做的事情。试试这个:

try {
    System.out.print("Entry " +i + "/5, enter an integer value: ");
    NumberEntry[i] = scan.nextInt();
}
catch (Exception e){
    scan.next();
    i--;
    continue;
}

这会跳过不需要的输入。它还会在同一次迭代中重新启动循环。