Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Create a java program named RationalNumber with the following specifications: Da

ID: 3825157 • Letter: C

Question

Create a java program named RationalNumber with the following specifications:

Data fields: int numerator, int denominator

Constructor: public RationalNumber(int n, int d)

Instance methods:

a) public RationalNumber add(RationalNumber r) //Adds the rational number in the object containing the called method and the rational number in the r object. Returns a new RationalNumber object that contains the sum

b) public RationalNumber multiply(RationalNumber r) // Multiplies the rational number in the object containing the called method and the rational number in the r object. Returns a new RationalNumber object that contains the product

c) Public void reduce() //Reduces the rational number to lowest terms. Does not create a new object

d) Public String toString() //Returns a string representing the value of the rational number. The string returned should include the slash character between the numerator and the denominator.

e) Test with 3/7 and 7/3

Explanation / Answer

Hi, Please find my implementation.

Please let me know in case of any issue.

public class RationalNumber {

   private long numerator = 0;

   private long denominator = 1;

   public RationalNumber() {

       this(0,1); }

   public RationalNumber(long numerator, long denominator) {

       long gcd = reduce(numerator, denominator);

       this.numerator = ((denominator > 0) ? 1 : -1) * numerator / gcd;

       this.denominator = Math.abs(denominator) / gcd;

   }

   private static long reduce(long n, long d) {

       long n1 = Math.abs(n);

       long n2 = Math.abs(d);

       int gcd = 1;

       for (int k = 1; k <= n1 && k <= n2; k++) {

           if (n1 % k == 0 && n2 % k == 0) {

               gcd = k; }

       }

       return gcd;

   }

   public long getNumerator() {

       return numerator;

   }

   public long getDenominator() {

       return denominator;

   }

   public RationalNumber add(RationalNumber other) {

       long num = numerator*other.denominator + other.numerator*denominator;

       long den = denominator*other.denominator;

       long gcd = reduce(num, den);

       return new RationalNumber(num/gcd, den/gcd);

   }

   public RationalNumber subtract(RationalNumber other) {

       long num = numerator*other.denominator - other.numerator*denominator;

       long den = denominator*other.denominator;

       long gcd = reduce(num, den);

       return new RationalNumber(num/gcd, den/gcd);

   }

   public RationalNumber multiply(RationalNumber other) {

       long num = numerator*other.numerator;

       long den = denominator*other.denominator;

       long gcd = reduce(num, den);

       return new RationalNumber(num/gcd, den/gcd);

   }

   public RationalNumber divide(RationalNumber other) {

       long num = numerator*other.denominator;

       long den = denominator*other.numerator;

       long gcd = reduce(num, den);

       return new RationalNumber(num/gcd, den/gcd);

   }

   @Override

   public String toString() {

       if(denominator == 1)

           return Long.toString(numerator);

       else if(denominator == -1)

           return Long.toString(-numerator);

       else

           return numerator+"/"+denominator;

   }

  

}

#################

public class RationalNumberTest {

  

   public static void main(String[] args) {

      

       RationalNumber r1 = new RationalNumber(3, 7);

       RationalNumber r2 = new RationalNumber(7, 3);

      

       System.out.println(r1);

       System.out.println(r2);

      

       System.out.println(r1.add(r2));

       System.out.println(r1.subtract(r2));

       System.out.println(r1.multiply(r2));

       System.out.println(r1.divide(r2));

   }

}

/*

Sample run:

3/7

7/3

58/21

-40/21

1

9/49

*/

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote