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
*/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.