Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Help in JAVA: Need help fixing my compareTo method. The method should compare tw

ID: 3698623 • Letter: H

Question

Help in JAVA: Need help fixing my compareTo method. The method should compare two fractions to one another and if A > B return1, if A < B return -1 and if they're equal to eachother return 0. I have my fraction below with a compareTo method but I run into a few problems please help me fix my method.

Fraction.java:

public static class Fraction implements Comparable<Fraction>
{
//Attributes
private int numerator;
private int denominator;
//Default Constructor
public Fraction() {
numerator = 1;

denominator = 1;
}
//Constructor
public Fraction(int num, int denom)
{
this.numerator = num;
this.denominator = denom;
}
//Getters and Setters
public int getNumerator() {

return numerator;

}

public void setNumerator(int numerator) {

this.numerator = numerator;

}

public int getDenominator() {

return denominator;

}

public void setDenominator(int denominator) {

this.denominator = denominator;

}
//toString to print
public String toString() {

return numerator + "/" + denominator;

}
//compareTo
public int compareTo(Fraction f)
{
if ((f.denominator*this.numerator)>(f.numerator*this.denominator))

return 1;

else if ((f.denominator*this.numerator)<(f.numerator*this.denominator))

return -1;

else

return 0;
}

}

Explanation / Answer

Your code is absolutely fine except the word static at the very beginning of class, As in java top class can not be static. So remove static from your code or make it an inner class.
Here is your perfect working code:

public class Fraction implements Comparable<Fraction>

{

//Attributes

private int numerator;

private int denominator;

//Default Constructor

public Fraction() {

numerator = 1;

denominator = 1;

}

//Constructor

public Fraction(int num, int denom)

{

this.numerator = num;

this.denominator = denom;

}

//Getters and Setters

public int getNumerator() {

return numerator;

}

public void setNumerator(int numerator) {

this.numerator = numerator;

}

public int getDenominator() {

return denominator;

}

public void setDenominator(int denominator) {

this.denominator = denominator;

}

//toString to print

public String toString() {

return numerator + "/" + denominator;

}

//compareTo

public int compareTo(Fraction f)

{

if ((f.denominator*this.numerator)>(f.numerator*this.denominator))

return 1;

else if ((f.denominator*this.numerator)<(f.numerator*this.denominator))

return -1;

else

return 0;

}

public static void main(String[] args) {

Fraction a = new Fraction(1, 2);

Fraction b = new Fraction(1,3);

System.out.println("As 1/2 is greater than 1/3 :");

System.out.println("So function returns: "+a.compareTo(b));

System.out.println("As 1/2 is equals to 1/2 :");

System.out.println("So function returns: "+a.compareTo(a));

System.out.println("As 1/3 is less than 1/2 :");

System.out.println("So function returns: "+b.compareTo(a));

}

}

Output:

As 1/2 is greater than 1/3 :
So function returns: 1
As 1/2 is equals to 1/2 :
So function returns: 0
As 1/3 is less than 1/2 :
So function returns: -1