多个用户输入的多个异常处理



我正在编写一个简单的除法程序。用户输入分子和分母。分子和分母是在用户不输入整数时引发异常。此外,如果用户输入 0,分母应引发异常。该错误应告诉用户每次他们做错了什么,并继续循环,直到输入正确的输入。然后,当值正确时,它应该退出。

为什么当用户输入不正确的分母条目时,它会再次请求分子?

import java.util.InputMismatchException;
import java.util.Scanner;
public static void main(String[] args) 
{
    // TODO Auto-generated method stub  
    System.out.printf("Welcome to Division n");
    Scanner div = new Scanner(System.in);
    boolean continueLoop = true;
do
{
    try 
    {
    System.out.println("nEnter a numerator:n");
    int num1 = div.nextInt();
    System.out.println("Enter a denominator:");
    int num2 = div.nextInt();
    int result = quotient(num1, num2);
    System.out.printf("The Answer is: %d / %d = %d%n",num1,num2,result);
    }
    catch(InputMismatchException inputMismatchException)
    {
        System.err.printf("n Exception n",inputMismatchException );
        div.nextLine();
        System.out.printf("You must enter integers");
    }
    catch(ArithmeticException arithmeticException)
    {
        System.err.printf("n Exception n",arithmeticException);
        System.out.printf(" Zero is an invalid entry");
    }
} while (continueLoop);
    System.out.printf("n GOODBYE n");
}
}

您捕获了异常,但 continueLoop 的值永远不会更新

你需要

一个嵌套的while循环。这是您的斜体问题的答案。它再次要求分子,因为您的 do while 循环从输入分子开始。

如果您希望程序在引发异常时停止,则可以执行以下操作:

     try {
            do {
                System.out.println("nEnter a numerator:n");
                int num1 = div.nextInt();
                System.out.println("Enter a denominator:");
                int num2 = div.nextInt();
                int result = quotient(num1, num2);
                System.out.printf("The Answer is: %d / %d = %d%n", num1, num2, result);
            } while (continueLoop);
        } catch (ArithmeticException arithmeticException) {
            System.err.printf("n Exception n", arithmeticException);
            System.out.printf(" Zero is an invalid entry");
        } catch (InputMissMatchException inputMismatchException) {
            System.err.printf("n Exception n", inputMismatchException);
            div.nextLine();
            System.out.printf("You must enter integers");
        }
        System.out.printf("n GOODBYE n");

但是现在你发现在 while 循环内,你的程序打印来自异常的消息并再次继续。如果你想继续这样,你可以在异常后输入一个验证,如果这个人想继续运行你的程序或类似的东西,你可以连接到你的continueLoop

相关内容

  • 没有找到相关文章

最新更新