Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

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

Step: 3

blur-text-image

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

Big Data Fundamentals Concepts, Drivers & Techniques

Authors: Thomas Erl, Wajid Khattak, Paul Buhler

1st Edition

0134291204, 9780134291208

More Books

Students also viewed these Databases questions

Question

How many Tables Will Base HCMSs typically have? Why?

Answered: 1 week ago

Question

What is the process of normalization?

Answered: 1 week ago