Answer: Note: Provided code shows several bugs, hence I implemented a separate code as per the given program specifications Program code: import java.util.Scanner; //declares fraction class class Fraction { //private data members for the class private int numerators,denominators; //default constructor public Fraction() { } //parameterised constructor for the class public Fraction(int numerators, int denominators) { //assigns numerator this.numerators = numerators; //checks the denominator if(denominators == 0) { System.out.println(\"denominator Shouldn\'t be ZERO \"); System.out.println(\"Program Exiting.....\"); System.exit(0); } this.denominators = denominators; } //parameterised constructor public Fraction(int numerators) { this.numerators = numerators; } //method TO string public String toString() { return \"\"+numerators+\" / \"+denominators; } //methods Equals() @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Fraction other = (Fraction) obj; if (this.numerators != other.numerators) { return false; } if (this.denominators != other.denominators) { return false; } return true; } //method GCD declaration public int GCD(int a, int b) { //declares local variables int x = 0, GCD = 0; int max = a > b ? a : b; int min = a < b ? a : b; for(int i = 1; i <= min; i++) { x = max * i; if(x % min == 0) { GCD = x; break; } } //returns GCD return GCD; } //Method to read public static Fraction read() { Scanner sc1 = new Scanner(System.in); System.out.print(\"Enter Fraction numerators : \"); int num1 = sc1.nextInt(); System.out.print(\"Enter Fraction denominators : \"); int den1 = sc1.nextInt(); System.out.println(); Fraction f1 = new Fraction(num1,den1); return f1; } //Method definition to add() public Fraction add(Fraction other1) { int GCD = GCD(this.denominators,other.denominators); int numb1 = this.numerators * (GCD/this.denominators); int numb2 = other1.numerators *(GCD/other.denominators); int num1 = 0, den1 = 0; num1 = numb1 + numb2; den1 = GCD; return new Fraction(num1,den1); } //method definition to add() public Fraction add(int temp1) { //defines the number variable int num1 = this.denominators * temp1 + this.numerators; return new Fraction(num1,this.denominators); } //method definition to subract public Fraction subtract(Fraction other1) { int GCD = GCD(this.denominators,other.denominators); int numb1 = this.numerators *(GCD/this.denominators); int numb2 = other1.numerators *(GCD/other1.denominators); int num1 = 0, den1 = 0; num1 = numb1 - numb2; den1 = GCD; return new Fraction(num1,den1); } //Method definition to multiply public Fraction multiply(Fraction other1) { int num1 = 0, den1 = 0; num1 = this.numerators * other1.numerators; den1 = this.denominators * other1.denominators; return new Fraction(num1,den1); } //method definition to Multiply public Fraction multiply(int temp1) { int num 1= this.numerators * temp1; return new Fraction(num1,this.denomina.