Complete the code where it says YOUR SOLUTION GOES HERE Ra
Complete the code where it says \"YOUR SOLUTION GOES HERE\":
//********************************************************************
// RationalNumber2.java Author: Lewis/Loftus
//
// Solution to Programming Project 7.4
//********************************************************************
public class RationalNumber2 implements Comparable
{
private int numerator, denominator;
private final double TOLERANCE = 0.0001;
//-----------------------------------------------------------------
// Sets up the rational number by ensuring a nonzero denominator
// and making only the numerator signed.
//-----------------------------------------------------------------
public RationalNumber2(int numer, int denom)
{
if (denom == 0)
denom = 1;
// Make the numerator \"store\" the sign
if (denom < 0)
{
numer = numer * -1;
denom = denom * -1;
}
numerator = numer;
denominator = denom;
reduce();
}
//-----------------------------------------------------------------
// Returns the numerator of this rational number.
//-----------------------------------------------------------------
public int getNumerator()
{
return numerator;
}
//-----------------------------------------------------------------
// Returns the denominator of this rational number.
//-----------------------------------------------------------------
public int getDenominator()
{
return denominator;
}
//-----------------------------------------------------------------
// Returns the reciprocal of this rational number.
//-----------------------------------------------------------------
public RationalNumber2 reciprocal()
{
return new RationalNumber2(denominator, numerator);
}
//-----------------------------------------------------------------
// Adds this rational number to the one passed as a parameter.
// A common denominator is found by multiplying the individual
// denominators.
//-----------------------------------------------------------------
public RationalNumber2 add(RationalNumber2 op2)
{
int commonDenominator = denominator * op2.getDenominator();
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int sum = numerator1 + numerator2;
return new RationalNumber2(sum, commonDenominator);
}
//-----------------------------------------------------------------
// Subtracts the rational number passed as a parameter from this
// rational number.
//-----------------------------------------------------------------
public RationalNumber2 subtract(RationalNumber2 op2)
{
int commonDenominator = denominator * op2.getDenominator();
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int difference = numerator1 - numerator2;
return new RationalNumber2(difference, commonDenominator);
}
//-----------------------------------------------------------------
// Multiplies this rational number by the one passed as a
// parameter.
//-----------------------------------------------------------------
public RationalNumber2 multiply(RationalNumber2 op2)
{
int numer = numerator * op2.getNumerator();
int denom = denominator * op2.getDenominator();
return new RationalNumber2(numer, denom);
}
//-----------------------------------------------------------------
// Divides this rational number by the one passed as a parameter
// by multiplying by the reciprocal of the second rational.
//-----------------------------------------------------------------
public RationalNumber2 divide(RationalNumber2 op2)
{
return multiply(op2.reciprocal());
}
//-----------------------------------------------------------------
// Determines if this rational number is equal to the one passed
// as a parameter. Assumes they are both reduced.
//-----------------------------------------------------------------
public boolean isLike(RationalNumber2 op2)
{
return ( numerator == op2.getNumerator() &&
denominator == op2.getDenominator() );
}
//-----------------------------------------------------------------
// Returns this rational number as a string.
//-----------------------------------------------------------------
public String toString()
{
String result;
if (numerator == 0)
result = \"0\";
else
if (denominator == 1)
result = numerator + \"\";
else
result = numerator + \"/\" + denominator;
return result;
}
//-----------------------------------------------------------------
// Compares this RationalNumber2 object to the parameter.
//-----------------------------------------------------------------
public int compareTo(Object obj)
{
// YOUR SOLUTION GOES HERE
}
//-----------------------------------------------------------------
// Reduces this rational number by dividing both the numerator
// and the denominator by their greatest common divisor.
//-----------------------------------------------------------------
private void reduce()
{
if (numerator != 0)
{
int common = gcd(Math.abs(numerator), denominator);
numerator = numerator / common;
denominator = denominator / common;
}
}
//-----------------------------------------------------------------
// Computes and returns the greatest common divisor of the two
// positive parameters. Uses Euclid\'s algorithm.
//-----------------------------------------------------------------
private int gcd(int num1, int num2)
{
while (num1 != num2)
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
return num1;
}
}
Solution
RationalNumber2.java
public class RationalNumber2 implements Comparable {
    private int numerator, denominator;
    private final double TOLERANCE = 0.0001;
   // -----------------------------------------------------------------
     // Sets up the rational number by ensuring a nonzero denominator
    // and making only the numerator signed.
    // -----------------------------------------------------------------
     public RationalNumber2(int numer, int denom) {
        if (denom == 0)
            denom = 1;
       // Make the numerator \"store\" the sign
        if (denom < 0) {
            numer = numer * -1;
            denom = denom * -1;
        }
       numerator = numer;
        denominator = denom;
       reduce();
    }
   // -----------------------------------------------------------------
     // Returns the numerator of this rational number.
    // -----------------------------------------------------------------
     public int getNumerator() {
        return numerator;
    }
   // -----------------------------------------------------------------
     // Returns the denominator of this rational number.
    // -----------------------------------------------------------------
     public int getDenominator() {
        return denominator;
    }
   // -----------------------------------------------------------------
     // Returns the reciprocal of this rational number.
    // -----------------------------------------------------------------
     public RationalNumber2 reciprocal() {
        return new RationalNumber2(denominator, numerator);
    }
   // -----------------------------------------------------------------
     // Adds this rational number to the one passed as a parameter.
    // A common denominator is found by multiplying the individual
    // denominators.
    // -----------------------------------------------------------------
     public RationalNumber2 add(RationalNumber2 op2) {
   
 int num1 = numerator;
 int denom1 = denominator;
 int num2 = op2.getNumerator();
 int denom2 = op2.getDenominator();
 int num3 = (num1 * denom2) + (num2 * denom1);
 int denom3 = denom1 * denom2;
 RationalNumber2 r1 = new RationalNumber2(num3, denom3);
 return r1;
}
   // -----------------------------------------------------------------
     // Subtracts the rational number passed as a parameter from this
    // rational number.
    // -----------------------------------------------------------------
     public RationalNumber2 subtract(RationalNumber2 op2) {
        int commonDenominator = denominator * op2.getDenominator();
        int numerator1 = numerator * op2.getDenominator();
        int numerator2 = op2.getNumerator() * denominator;
        int difference = numerator1 - numerator2;
       return new RationalNumber2(difference, commonDenominator);
    }
   // -----------------------------------------------------------------
     // Multiplies this rational number by the one passed as a
    // parameter.
    // -----------------------------------------------------------------
     public RationalNumber2 multiply(RationalNumber2 op2) {
        int numer = numerator * op2.getNumerator();
        int denom = denominator * op2.getDenominator();
       return new RationalNumber2(numer, denom);
    }
   // -----------------------------------------------------------------
     // Divides this rational number by the one passed as a parameter
    // by multiplying by the reciprocal of the second rational.
    // -----------------------------------------------------------------
     public RationalNumber2 divide(RationalNumber2 op2) {
        return multiply(op2.reciprocal());
    }
   // -----------------------------------------------------------------
     // Determines if this rational number is equal to the one passed
    // as a parameter. Assumes they are both reduced.
    // -----------------------------------------------------------------
     public boolean isLike(RationalNumber2 op2) {
        return (numerator == op2.getNumerator() && denominator == op2
                .getDenominator());
    }
   // -----------------------------------------------------------------
     // Returns this rational number as a string.
    // -----------------------------------------------------------------
     public String toString() {
        String result;
       if (numerator == 0)
            result = \"0\";
        else if (denominator == 1)
            result = numerator + \"\";
        else
            result = numerator + \"/\" + denominator;
       return result;
    }
   // -----------------------------------------------------------------
     // Compares this RationalNumber2 object to the parameter.
    // -----------------------------------------------------------------
     public int compareTo(Object obj) {
        RationalNumber2 a=(RationalNumber2)obj;
 int thisRational = numerator * a.getDenominator();
 int otherRational = a.getNumerator() * denominator;
 if (thisRational < otherRational){
 return -1;
 }else if (thisRational > otherRational ){
 return 1;
 }else{
 return 0;
 }
}
   // -----------------------------------------------------------------
     // Reduces this rational number by dividing both the numerator
    // and the denominator by their greatest common divisor.
    // -----------------------------------------------------------------
     public void reduce() {
        if (numerator != 0) {
            int common = gcd(Math.abs(numerator), denominator);
           numerator = numerator / common;
            denominator = denominator / common;
        }
       
    }
   // -----------------------------------------------------------------
     // Computes and returns the greatest common divisor of the two
    // positive parameters. Uses Euclid\'s algorithm.
    // -----------------------------------------------------------------
     private int gcd(int num1, int num2) {
   
 // % is modulus which is the remainder of a division
 // base case
 if ((num1 % num2) == 0) {
 return num2;
 }
 // recursive case
 else {
 return gcd(num2, num1 % num2);
 }
   }
   
}
_______________________
Test.java
import java.util.Scanner;
 public class Test {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System.in);
 Scanner sc1 = new Scanner(System.in);
 while (true) {
 //Getting the First Rational number From the user
 System.out.println(\":: Enter Rational No 1 ::\");
 System.out.print(\"Enter Numerator =\");
 int num1 = sc.nextInt();
 System.out.print(\"Enter Denominator =\");
 int denom1 = sc.nextInt();
 //Getting the second Rational number From the user
 System.out.println(\":: Enter Rational No 2 ::\");
 System.out.print(\"Enter Numerator =\");
 int num2 = sc.nextInt();
 System.out.print(\"Enter Denominator =\");
 int denom2 = sc.nextInt();
   
 //Creating the objects to Rational Class
 RationalNumber2 r = new RationalNumber2(num1, denom1);
 RationalNumber2 r1 = new RationalNumber2(num2, denom2);
 System.out.println(\" \");
   
 RationalNumber2 rc=r.reciprocal();
 System.out.println(rc.toString()+\" is the reciprocal and reduced form of (\" +num1+\"/\"+denom1+\")\" );
   
   
 // Reducing the Rational Numbers
 System.out.println(\"** Rational Reduced Forms **\");
 r.reduce();
 System.out.println(\"(\" +num1+\"/\"+denom1+\") reduced to :\" + r.toString());
 r1.reduce();
 System.out.println(\"(\" +num2+\"/\"+denom2+\") reduced to :\" + r1.toString());
   
 System.out.println(\"\ ** Adding two Rational Numbers **\");
 // Addition of two Rational Numbers
 RationalNumber2 r11=r.add(r1);
 System.out.println(\"(\" + r.toString() + \") +\" + \"(\" + r1.toString()+ \") = \" + r11.toString());
 System.out.println(\"\ ** Subtracting two Rational Numbers **\");
 RationalNumber2 r12=r.subtract(r1);
 System.out.println(\"(\" + r.toString() + \") -\" + \"(\" + r1.toString()+ \") = \" + r12.toString());
 System.out.println(\"\ ** Multiplying two Rational Numbers **\");
 RationalNumber2 r13=r.multiply(r1);
 System.out.println(\"(\" + r.toString() + \") *\" + \"(\" + r1.toString()+ \") = \" + r13.toString());
 System.out.println(\"\ ** Dividing two Rational Numbers **\");
 RationalNumber2 r14=r.divide(r1);
 System.out.println(\"(\" + r.toString() + \") /\" + \"(\" + r1.toString()+ \") = \" + r14.toString());
   
   
 System.out.println(\"\ ** Comparing two Rational Numbers **\");
 // Comparing Two Rational Numbers
 int com = r.compareTo(r1);
 if (com == -1)
 System.out.println(\"(\" + r.toString() + \") less than (\" + r1.toString()+ \")\");
 else if(com == 1)
 System.out.println(\"(\" + r.toString() + \") greater than (\" + r1.toString()+ \")\");
 else if(com==0)
    System.out.println(\"(\" + r.toString() + \") equal to (\" + r1.toString()+ \")\");
   
   
   
 System.out.print(\"Do you want to continue(Y/N):\");
 char c = sc1.next(\".\").charAt(0);
 if (c == \'Y\' || c == \'y\')
 continue;
 else {
 System.out.println(\":: Program Exit ::\");
 break;
 }
 }
 }
 }
__________________________
Output:
:: Enter Rational No 1 ::
 Enter Numerator =5
 Enter Denominator =25
 :: Enter Rational No 2 ::
 Enter Numerator =25
 Enter Denominator =125
 
 5 is the reciprocal and reduced form of (5/25)
 ** Rational Reduced Forms **
 (5/25) reduced to :1/5
 (25/125) reduced to :1/5
** Adding two Rational Numbers **
 (1/5) +(1/5) = 2/5
** Subtracting two Rational Numbers **
 (1/5) -(1/5) = 0
** Multiplying two Rational Numbers **
 (1/5) *(1/5) = 1/25
** Dividing two Rational Numbers **
 (1/5) /(1/5) = 1
** Comparing two Rational Numbers **
 (1/5) equal to (1/5)
 Do you want to continue(Y/N):y
 :: Enter Rational No 1 ::
 Enter Numerator =3
 Enter Denominator =81
 :: Enter Rational No 2 ::
 Enter Numerator =27
 Enter Denominator =243
 
 27 is the reciprocal and reduced form of (3/81)
 ** Rational Reduced Forms **
 (3/81) reduced to :1/27
 (27/243) reduced to :1/9
** Adding two Rational Numbers **
 (1/27) +(1/9) = 4/27
** Subtracting two Rational Numbers **
 (1/27) -(1/9) = -2/27
** Multiplying two Rational Numbers **
 (1/27) *(1/9) = 1/243
** Dividing two Rational Numbers **
 (1/27) /(1/9) = 1/3
** Comparing two Rational Numbers **
 (1/27) less than (1/9)
 Do you want to continue(Y/N):n
 :: Program Exit ::
____________Thank You










