ホームページ > Java > &#&チュートリアル > JavaでInputMismatchExceptionを処理するときに無限ループを防ぐ方法は?

JavaでInputMismatchExceptionを処理するときに無限ループを防ぐ方法は?

DDD
リリース: 2024-12-24 00:38:14
オリジナル
386 人が閲覧しました

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

InputMismatchException を伴う try/catch ブロックの無限ループ: 解決策

try で InputMismatchException を処理するときに Java プログラムで無限ループが発生する/catch は、ユーザーから整数入力を受け取るときにブロックします。この動作は、InputMismatchException をキャッチした後、スキャナが無効な状態のままになり、ループが無限に繰り返されることが原因です。

この問題を解決するには、catch ブロック内で次の操作を実行する必要があります。 :

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next(); // Move to the next line to avoid the infinite loop
}
ログイン後にコピー

input.next() メソッドはスキャナ ポインタを次の行に進め、エラーの原因となった無効な入力を効果的に破棄します。 Exception.

あるいは、整数の読み取りを試行する前に hasNextInt() メソッドを利用して、読み取られる値が実際に整数であることを確認することもできます。このアプローチにより、例外処理の必要性が完全に排除されます。

while (true) {
    if (input.hasNextInt()) {
        n1 = input.nextInt();
        break;
    } else {
        input.next(); // Skip non-numeric input
    }
}
ログイン後にコピー

Java スキャナのドキュメントには、InputMismatchException がスローされた後、スキャナは例外の原因となるトークンを渡さないため、トークンを取得する必要があると記載されていることに注意してください。または他の手段を介してバイパスされます。これらの変更を実装すると、Java プログラムの無限ループの問題が軽減されます。

以上がJavaでInputMismatchExceptionを処理するときに無限ループを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート