try/ を利用してユーザーから整数入力を読み取るプログラム内catch ブロックで無効なエントリを処理すると、InputMismatchException がスローされると無限ループが発生します(例: ユーザーが整数以外の文字を入力したとき)。
無限ループは 2 つの問題によって引き起こされます:
無限ループを修正し、InputMismatchException を正しく処理するには、いくつかの手順を実行します。取得できます:
提案された改善を加えて変更されたコードは次のとおりです。
import java.util.InputMismatchException; import java.util.Scanner; public class Except { public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean bError = true; int n1 = 0, n2 = 0, nQuotient = 0; do { try { System.out.println("Enter first num: "); n1 = input.nextInt(); System.out.println("Enter second num: "); n2 = input.nextInt(); nQuotient = n1/n2; bError = false; } catch (InputMismatchException e) { System.out.println("Error!"); input.next(); // Consume the erroneous input } } while (bError); System.out.printf("%d/%d = %d",n1,n2, nQuotient); } }
以上がJavaでInputMismatchExceptionを処理するときに無限ループを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。