2015-07-10 21 views
0

我試圖讓我做的時候塊正常運行。封閉的內部是一個只有部分工作的try和catch塊。如果輸入Int以外的內容,並且在除以零時也捕獲異常,我希望它捕獲一個異常(InputMismatchException)。如果發生任何一種捕獲,那麼目的是通過do while循環再次返回到try。目前,它正在爲ArithmeticException工作,但不適用於InputMismatchException。當我輸入字符而不是Int時,它似乎不停地循環。請幫忙。我不明白爲什麼這個工作,而不是其他。儘管試着抓住封閉的問題

​​

回答

2

獲取InputMismatchException不會跳過錯誤的數據,因此下一次調用nextInt()將失敗,原因相同。您應該嘗試撥打nextLine()進行查詢:

} catch (InputMismatchException e) { 
    System.out.println("That is not a number. Please try again."); 
    result = false; 
    user_input.nextLine(); // Advance past the bad stuff 
} 
3
while (result = true) 

應該

while (result == true) 

或只是

while (result) 
0

刪除你做什麼,只是使用while循環

,改變你的第二個,而到

while(result)