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