// Class Fraction // Bob Myers class Fraction { private int numerator = 0; // numerator (and keeps sign) private int denominator = 1; // always stores positive value public Fraction() { } public Fraction(int n) { this(n,1); } public Fraction(int n, int d) { if (set(n,d)==false) set(0,1); } public boolean set(int n, int d) { if (d > 0) { numerator = n; denominator = d; return true; } else return false; } public void show() { System.out.print(numerator + "/" + denominator); } public String toString() { return (numerator + "/" + denominator); } public int getNumerator() { return numerator; } public int getDenominator() { return denominator; } public double decimal() { return (double)numerator / denominator; } // more features? -- think some up and add them! // sample test program public static void main(String[] args) { Fraction f1, f2; f1 = new Fraction(); f2 = new Fraction(3, 5); // Printing out the fraction objects System.out.print("\nFraction f1 = "); // OKAY f1.show(); // uses toString explicitly System.out.print("\nFraction f2 = " + f2.toString()); // BETTER // uses toString implicitly System.out.print("\nFraction f2 = " + f2); // BEST System.out.println("\nCalling f1.set(11,14)"); if (f1.set(11,14) == false) System.out.println("** set attempt failed"); System.out.println("\nCalling f2.set(4,0)"); if (!f2.set(4,0)) System.out.println("** set attempt failed"); System.out.print("\nFraction f1 = "); f1.show(); System.out.print("\nFraction f2 = "); f2.show(); System.out.println("\nDecimal value of f1 = " + f1.decimal()); System.out.println("Decimal value of f2 = " + f2.decimal()); } }