
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class DivisionDemoSecondVersion
{
   public static void main(String[] args) throws IOException
   {
       BufferedReader keyboard = new BufferedReader(
                         new InputStreamReader(System.in));

        try
        {
           System.out.println("Enter numerator:"); 
           String numeratorString = keyboard.readLine( );
           int numerator = Integer.parseInt(numeratorString);
           System.out.println("Enter denominator:"); 
           String denominatorString = keyboard.readLine( );
           int denominator =
                        Integer.parseInt(denominatorString);

           if (denominator == 0)
               throw new DivisionByZeroException( );
           double quotient = safeDivide(numerator, denominator);
           System.out.println(numerator + "/" 
                                     + denominator 
                                     + " = " + quotient);
        }
        catch(DivisionByZeroException e)
        {
            System.out.println(e.getMessage( ));
            secondChance( );
        }

        System.out.println("End of program.");
  }

  public static double safeDivide(int top, int bottom) 
                             throws DivisionByZeroException
   {
       if (bottom == 0)
           throw new DivisionByZeroException( );

       return top/(double)bottom;
   }
 
   public static void secondChance( ) throws IOException
   {
       BufferedReader keyboard = new BufferedReader(
                         new InputStreamReader(System.in));

       System.out.println("Try again.");
       System.out.println("Enter numerator:"); 
       String numeratorString = keyboard.readLine( );
       int numerator = Integer.parseInt(numeratorString);
       System.out.println("Enter denominator:"); 
       System.out.println(
                      "Be sure the denominator is not zero.");
       String denominatorString = keyboard.readLine( );
       int denominator = Integer.parseInt(denominatorString);

       if (denominator == 0)
       {
           System.out.println("I cannot do division by zero.");
           System.out.println("Aborting program.");
           System.exit(0);
       }

       double quotient = numerator/(double)denominator;
       System.out.println(numerator + "/" 
                                     + denominator 
                                     + " = " + quotient);
    }
}
 
