Question
I'm stumped, please write full code not just the comparable interface but the full code and output in a screenshot in answer. Modify the RationalNumber
I'm stumped, please write full code not just the comparable interface but the full code and output in a screenshot in answer. Modify the RationalNumber class so that it implements the Comparable interface. To perform the comparison, compute an equivalent floating point value from the numerator and denomi-nator for both RationalNumber objects, then compare them using a tolerance value of 0.0001. Write a main driver to test your modifications.
Main driver, already wrote it
[code] //******************************************************************** // RationalNumber.java Java Foundations // // Represents one rational number with a numerator and denominator. //******************************************************************** public class RationalNumber { private int numerator, denominator; // ----------------------------------------------------------------- // Constructor: Sets up the rational number by ensuring a nonzero // denominator and making only the numerator signed. // ----------------------------------------------------------------- public RationalNumber(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 RationalNumber reciprocal() { return new RationalNumber(denominator, numerator); } // ----------------------------------------------------------------- // Adds this rational number to the one passed as a parameter. // A common denominator is found by multiplying the individual // denominators. // ----------------------------------------------------------------- public RationalNumber add(RationalNumber op2) { int commonDenominator = denominator * op2.getDenominator(); int numerator1 = numerator * op2.getDenominator(); int numerator2 = op2.getNumerator() * denominator; int sum = numerator1 + numerator2; return new RationalNumber(sum, commonDenominator); } // ----------------------------------------------------------------- // Subtracts the rational number passed as a parameter from this // rational number. // ----------------------------------------------------------------- public RationalNumber subtract(RationalNumber op2) { int commonDenominator = denominator * op2.getDenominator(); int numerator1 = numerator * op2.getDenominator(); int numerator2 = op2.getNumerator() * denominator; int difference = numerator1 - numerator2; return new RationalNumber(difference, commonDenominator); } // ----------------------------------------------------------------- // Multiplies this rational number by the one passed as a // parameter. // ----------------------------------------------------------------- public RationalNumber multiply(RationalNumber op2) { int numer = numerator * op2.getNumerator(); int denom = denominator * op2.getDenominator(); return new RationalNumber(numer, denom); } // ----------------------------------------------------------------- // Divides this rational number by the one passed as a parameter // by multiplying by the reciprocal of the second rational. // ----------------------------------------------------------------- public RationalNumber divide(RationalNumber 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(RationalNumber 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; } // ----------------------------------------------------------------- // 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; } } [/code] [code] public class RationalTester { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub RationalNumber r1 = new RationalNumber(6, 8); RationalNumber r2 = new RationalNumber(1, 3); RationalNumber r3, r4, r5, r6, r7; System.out.println("First rational number: " + r1); System.out.println("Second rational number: " + r2); if (r1.isLike(r2)) { System.out.println("r1 and r2 are equal"); } else { System.out.println("r1 and r2 are NOT equal"); } r3 = r1.reciprocal(); System.out.println("The reciprocal of r1 is: " + r3); r4 = r1.add(r2); r5 = r1.subtract(r2); r6 = r1.multiply(r2); r7 = r1.divide(r2); System.out.println("r1 + r2: " + r4); System.out.println("r1 - r2: " + r5); System.out.println("r1 * r2: " + r6); System.out.println("r1 / r2: " + r7); } } [/code]
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started