
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class DivisionDemoThirdVersion
{
   public static void main(String[] args)
   {

        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);


           double quotient = safeDivide(numerator, denominator);
           System.out.println(numerator + "/" 
                                     + denominator 
                                     + " = " + quotient);
        }
        catch(DivisionByZeroException e)
        {
            System.out.println(e.getMessage( ));
            secondChance( );
        }
        catch(IOException e)
        {
            System.out.println("IO Problem. Aborting program.");
            System.exit(0);
        }
        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( )
   {
      BufferedReader keyboard = new BufferedReader(
                           new InputStreamReader(System.in));

      try
      {
         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);
      }
      catch(IOException e)
      {
          System.out.println("IO Problem. Aborting program.");
          System.exit(0);
      }
   }
}
 