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

时间:2016-01-24 05:14:38

标签: java exception-handling user-input java-7

我正在写一个简单的分工程序。用户输入分子和分母。如果用户没有输入整数,则分子和分母将抛出异常。此外,如果用户输入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");
}

}

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

(function(Pigeon, root, factory) {
    root[Pigeon] = factory();
} ('Pigeon', this, function() {

    var Pigeon = {};

    // Model
    var Model = Pigeon.Model = function() {
        this.attributes = {};
    };

    // Collection
    var Collection = Pigeon.Collection = function(models) {

    };

    // View
    Pigeon.View = {};

    // Controller
    Pigeon.Controller = {};

    return Pigeon;

}));

但是现在你捕获的是在while循环中,你的程序打印来自异常的消息并再次继续。如果你想继续这种方式,你可以在异常后输入验证,如果这个人想要继续运行你的程序或类似你可以连接到你的continueLoop