Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved 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

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 <- already wrote it, its RationalTester.java (included at end). At this point I'm stumped, please write full code and output but preferable if output is in a screenshot. [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

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Processing

Authors: David Kroenke

11th Edition

0132302675, 9780132302678

Students also viewed these Databases questions

Question

What are Decision Trees?

Answered: 1 week ago

Question

What is meant by the Term Glass Ceiling?

Answered: 1 week ago