帶有InputMismatchException的try/catch區塊中的無限循環:解決方案
您的Java程式在try中處理InputMismatchException時遇到無限循環/catch 區塊,同時從使用者取得整數輸入。此行為源自於這樣的事實:捕獲 InputMismatchException 後,掃描器仍處於無效狀態,導致無限重複循環。
要解決此問題,您必須在catch 區塊中執行以下操作:
catch (InputMismatchException e) { System.out.println("Error!"); input.next(); // Move to the next line to avoid the infinite loop }
input.next() 方法將掃描器指標前進到下一行,有效地丟棄導致
或者,您可以在嘗試讀取整數之前使用hasNextInt() 方法,從而確保讀取的值確實是整數。這種方法完全消除了異常處理的需要:
while (true) { if (input.hasNextInt()) { n1 = input.nextInt(); break; } else { input.next(); // Skip non-numeric input } }
請記住,Java Scanner 文件指出,在拋出InputMismatchException 後,掃描器將不會傳遞負責異常的令牌,需要檢索它或透過其他方式繞過。實施這些修改應該可以緩解 Java 程式中無限的循環問題。
以上是Java中處理InputMismatchException時如何防止無限迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!