0

私のコードの catch ステートメントの後に何をするかについて少し混乱しています。例外がスローされ、ループでキャッチされると、ループは無限になります。また、非常に長い数列 (+10 程度) を入力すると、ループが無限になることもわかりました。私は Java での例外処理にかなり慣れていないので、詳細な説明は非常に教育的です。

public static void main(String[] args)
{
    boolean cont = false;

          while (!cont)
        {
            addInputNumber();
            cont = tryAgain();
        }
}


  private static void addInputNumber ()
  {
    boolean valid;
    int total;
    int inputInt;
    @SuppressWarnings("resource")
    Scanner input = new Scanner(System.in);

    do
    {
        try
        {
            System.out.print("Enter a number(between 0 and 1000)");
            inputInt = input.nextInt();

            if(inputInt > 0 && inputInt < 1000)
                {
                    valid = true;

                    total = (inputInt % 10) + ((inputInt / 10) % 10) + (inputInt / 100);

                    System.out.println("\n" + "The total of " + inputInt + " is " + total);
                }

            else
                {
                    System.out.println("\n" + "ERROR---ENTER A NUMBER BETWEEN 0 AND 1000" + "\n");
                    valid = false;
                }
        }

        catch(InputMismatchException ex)
        {
            System.out.println("\n" + "ERROR---ENTER A NUMBER BETWEEN 0 AND 1000" + "\n");
            valid = false;
        }
    } while(!valid);
}
4

4 に答える 4

0

catch ブロックで、変数 valid が false に設定されました。次に、コードで

while(!valid)

条件が真になり、ループは無限になります

于 2013-07-24T06:34:22.403 に答える