ホームページ >Java >&#&チュートリアル >try-catch ブロックで InputMismatchException を処理するときに無限ループを回避するにはどうすればよいですか?

try-catch ブロックで InputMismatchException を処理するときに無限ループを回避するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 21:56:14421ブラウズ

How to Avoid Infinite Loops When Handling InputMismatchException in a try-catch Block?

InputMismatchException による try/catch 無限ループ問題

ユーザーに整数入力を求めるコードを実装する場合、try/catch ブロックを利用すると、一般的な習慣。ただし、無限ループを回避するには例外を正しく処理することが重要です。

この例では、例外は do-while ループ内でキャッチされています。 InputMismatchException がスローされた場合、「エラー!」メッセージは、後続のループ反復を実行せずに繰り返し表示されます。これは、入力バッファが不整合な状態のままであり、例外をキャッチするだけではエラーを解決できないために発生します。

この問題を解決するには、次の手順が必要です。

  • catch ブロックでは、input.next() を呼び出します。入力バッファをクリアして、ユーザーが次の反復で有効なデータを入力できるようにします。
  • 整数を読み取る前に hasNextInt() を使用して有効な入力が利用可能かどうかを確認し、例外の可能性を減らすことを検討してください。

これらの修正を示す、変更されたコード スニペットを次に示します。

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next();  // Clear the input buffer
}

さらに、特定の例外 (InputMismatchException など) を適切に処理するには、明示的な catch ブロックを使用することをお勧めします。

以上がtry-catch ブロックで InputMismatchException を処理するときに無限ループを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。