2013-10-02 64 views
1

我想读取用户的选择和条目的整数值,但不希望例外程序崩溃,如果用户犯了一个错误,并输入一个不可读的值。为此,我编写了一个while循环,其中包含一个try/catch序列,该序列用于在无效输入的情况下返回解释用户错误的简短语句以及提示重试。扫描仪在循环尝试/捕获失败

当我用这段代码运行程序时,虽然我用来读取用户输入的Scanner对象似乎在循环的第一遍过程中正常工作,但在随后的过程中,try语句自动失败而不等待新输入,这自然会导致一系列无尽的错误消息和提示。

这里是我的代码:

 Scanner tScan = new Scanner(System.in); 
     int gChoice = 0; 
     boolean gValid = false; 
     while (!gValid) 
     { 
      try{ 
       gChoice += tScan.nextInt(); 
       gValid =true; 
      } catch(Exception e){ 
       System.out.println("Input rejected. Please try again:"); 
      } 
     } 

程序暂停在gChoice += tScan.nextInt();,只会继续当用户输入一些数据,并TSCAN试图从中收获一个整数。如果找不到整数,则进入catch语句,返回到循环的开始处,注意gValid仍然不正确,输入try语句,读取行gChoice += tScan.nextInt();,但不会暂停用户输入,无法分配g从tScan中选择一个整数,继续执行catch语句等等。

我很感激任何关于我可能会做错的建议,或者如何避免这个问题。

编辑:现在解决了,感谢Greg。

回答