class RationalNumber implements Comparable{ // Data fields for numerator and denominator private int numerator; private int denominator; /** Default constructor */ public RationalNumber() { this.numerator = 0; this.denominator = 1; } /** Construct a rational with specified numerator and denominator */ public RationalNumber(int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; } /** Return numerator */ public int getNumerator() { return numerator; } /** Return denominator */ public int getDenominator() { return denominator; } /** Add a rational number to this rational */ public RationalNumber add(RationalNumber secondRational) { int n = numerator*secondRational.getDenominator() + denominator*secondRational.getNumerator(); int d = denominator*secondRational.getDenominator(); return new RationalNumber(n, d); } /** Subtract a rational number from this rational */ public RationalNumber subtract(RationalNumber secondRational) { int n = numerator*secondRational.getDenominator() - denominator*secondRational.getNumerator(); int d = denominator*secondRational.getDenominator(); return new RationalNumber(n, d); } /** Multiply a rational number to this rational */ public RationalNumber multiply(RationalNumber secondRational) { int n = numerator*secondRational.getNumerator(); int d = denominator*secondRational.getDenominator(); return new RationalNumber(n, d); } /** Divide a rational number from this rational */ public RationalNumber divide(RationalNumber secondRational){ if (secondRational.getNumerator() == 0) { System.out.println("Denominator cannot be zero!"); return null; } int n = numerator*secondRational.getDenominator(); int d = denominator*secondRational.getNumerator(); return new RationalNumber(n, d); } public int compareTo(Object o) { RationalNumber rn = null; if(!(o instanceof RationalNumber)) { System.out.println("Wrong type comparison"); return -100; } else rn = (RationalNumber) o; if ( (numerator / denominator) > (rn.getNumerator() / rn.getDenominator()) ) return 1; else if ((numerator / denominator) < (rn.getNumerator() / rn.getDenominator())) return -1; else return 0; } /** Override the toString() method */ public String toString() { if (denominator == 1) return numerator + ""; else return numerator + "/" + denominator; } }