InputMismatchException的try/catch區塊中的無限循環:解決方案
您的Java程式在嘗試處理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 程式中的無限循環問題。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3