2013-10-02 58 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。

回答