Find any Java Fraction class on the Internet. Add any methods from the Lecture s
ID: 3785789 • Letter: F
Question
Find any Java Fraction class on the Internet. Add any methods from the Lecture slides that are not implemented. Add a static “main” method that tests every single method, including constructors, for correctness.
Here's what I have so far:
public class Fraction { public static final Fraction ZERO = new Fraction(); //constants
private int numerator, denominator; //instance variables
public Fraction() { numerator=0; denominator=1;} //default constructor
public Fraction(int num, int denom) {numerator = num; denominator = denom;}
public Fraction(Fraction toCopy) { //copy constructor
this.numerator = toCopy.numerator; /* … */}
public Fraction(String constant) {return Fraction.parse(constant); } /*optional*/
public int getNumerator() {return numerator;} //getter or accessor
public Fraction set(int num, int denom) //setter
{numerator = num; denominator = denom; return this;}
public Fraction reduce() { /* … */ return this;} //mutator
public Fraction add(Fraction f) { /* … */ return this;} //mutator
public int compareTo(Fraction f) { /* … */ return 0;} //predicate or test
public boolean equals(Object o) { /* … */ return true; } //predicate or tests
public static Fraction parse(String input) { /* … */ return ZERO;} //converts toString output
public String toString() { /* … */ return “3/4”;} //enables System.out.print }
Those were all the method from the lecture slide plus any others I could find. I just need them tested in a main method now and I'm not sure how to do that.
Explanation / Answer
Hi, Please find my implementation.
Please let me know in case of any issue.
############## Fraction.java ##########
public class Fraction {
/**
* instance variable
*/
public int numerator;
/**
* instance variable
*/
public int denominator;
// copy constructor
public Fraction(Fraction other) {
numerator = other.numerator;
denominator = other.denominator;
}
/**
* param n
* param d
*/
public Fraction(int n, int d) {
if(d == 0){
System.out.println("Denominator can not be negative");
System.exit(0);
}
// finding gcd of n and d
int gcd = reduce(n, d);
// storing numerator and denominator in reduced form
numerator = n/gcd;
denominator = d/gcd;
}
// toString method
public String toString(){
return numerator+"/"+denominator;
}
// equal method
public boolean equals(Object other)
{
if( other != null && ! (other instanceof Fraction ) ) return false;
Fraction that = (Fraction)other;
if(numerator == that.numerator && denominator == that.denominator)
return true;
else
return false;
}
/**
* function to calculate gcd of numerator and denominator
*/
private int reduce(int numerator, int denominator) {
int min = numerator;
int gcd;
if (numerator > denominator) {
min = denominator;
}
for (gcd = min; gcd > 1; gcd--) {
if (numerator % gcd == 0 && denominator % gcd == 0) {
break;
}
}
return gcd;
}
public Fraction add(Fraction other){
int num = numerator*other.denominator + denominator*other.numerator;
int deno = numerator*denominator;
int gcd = reduce(num, deno);
return new Fraction(num/gcd, deno/gcd);
}
public Fraction set(int num, int denom) //setter
{numerator = num; denominator = denom; return this;}
public int compareTo(Fraction f) {
double f1 = (double)numerator/(double)denominator;
double f2 = (double)f.numerator/(double)f.denominator;
if(f1 < f2)
return -1;
else if(f1 > f2)
return 1;
else
return 0;
} //predicate or test
}
############## FractionTest.java ################
public class FractionDriver {
public static void main(String[] args) {
Fraction a = new Fraction(1,2);
Fraction b = new Fraction(3,4);
Fraction c = new Fraction(b);
System.out.println("a:"+a.toString());
System.out.println("b:"+b.toString());
System.out.println("c:"+c.toString());
a.add(b);
a = a.add(b);
System.out.println("a:"+a.toString());
System.out.println("b:"+b.toString());
System.out.println("c:"+c.toString());
System.out.println("a.equals(b):" + a.equals(b));
System.out.println("b.equals(c):" + b.equals(c));
}
}
/*
Sample output:
a:1/2
b:3/4
c:3/4
a:5/1
b:3/4
c:3/4
a.equals(b):false
b.equals(c):true
*/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.