Add a private method simplify() to the following Java program that converts a fraction to its simplest form. For example, the fraction 20 / 60 should be stored in the class instance variables as 1 / 3 (i.e. numerator = 1, denominator = 3). N.B. you will need a method to determine the Greatest Common Divisor (GCD. Remember, both of these methods (simplify and gcd) must be private. As these methods are private, client programs cannot access them. So, how are they to be used? They can only be accessed within the Fraction class. Given their purpose, it would mean that any Fraction class method that modifies the instance variables (e.g.: input, add, constructor, set) should call the simplify() method to reduce the instance variables to their minimum values. Thus, these methods are used only for housekeeping; they are not to be used by client programs. Program: import java.util.ArrayList; import java.util.Scanner;   //Define the class Fraction class Fraction { private int n, d; public Fraction() { this.n = this.d = 0; //Initialize the values } public Fraction(int n, int d) { this.n = n; //Initialize the variables this.d = d; } //Define the getter function getNum() that returns the numerator public int getNum() { //Returns numerator return n; } //Define the getter function getDen() that returns the denominator public int getDen() { //Returns denominator return d; } //Define the boolean function isZero() that returns 0 if numerator is 0 and denominator is not equals to zero public boolean isZero() { return(getNum() == 0 && getDen() != 0); } public boolean isequals(Object c) { Fraction f = (Fraction) c; return(Integer.compare(n,f.n))==0 && (Integer.compare(d,f.d)==0); } //Define the function getSimplifiedFraction() that returns the simplified fraction public String getSimplifiedFraction() { //Decalre the string variable result to store the result String result = ""; //if the numerator and denominator both are zero if(getNum() == 0 && getDen() == 0) //result is zero result = "0"; //if the numerator is zero and denominator is non-zero else if(isZero()) //result is zero result = "0"; //if the numerator is non-zero and denominator is zero else if(getNum() != 0 && getDen() == 0) //result is Undefined result = "Undefined"; //for a defined and non-zero fraction else { //if the remainder is zero if(getNum() % getDen() == 0) result = (getNum() / getDen()) + ""; //if the numerator and denominator both are greater than zero else if(getNum() < 0 && getDen() < 0) result = (getNum() * -1) + "/" + (getDen() * -1); //if any of them is zero else if(getNum() < 0 || getDen() < 0) { //if the numerator is greater than zero if(getNum() < 0) result = "-" + (getNum() * -1) + "/" + getDen(); // appending a sign. //if the denominator is zero else result = "-" + getNum() + "/" + (getDen() * -1); // appending a sign. } //both are non-zero else result = (getNum() + "/" + getDen()); } //return the result return result; } //Define the method display() that displays the resultant fraction public void display() { //Call and display the fraction System.out.println(getSimplifiedFraction()); } public Fraction add(Fraction rhs) { Fraction sum = new Fraction(); sum.d = d * rhs.d; sum.n = n * rhs.d + d * rhs.n; sum.simplify(); return sum; } private void simplify() { int a,b; if(Math.abs(n) > Math.abs(d)) { a = Math.abs(n); b = Math.abs(d); } else { a = Math.abs(d); b = Math.abs(n); } int r = a%b; while(r != 0) { a = b; b = r; r = a%b; } //divide numerator and denominator by b n /= b; d /= b; } }   class Main { public static void main(String[] args) { String res; int num, den, num1, den1; ArrayList fractions = new ArrayList<>(); Scanner sc = new Scanner(System.in); do { System.out.print("Enter the num: "); num = Integer.parseInt(sc.nextLine().trim()); if(num < 0) break; System.out.print("Enter the den: "); den = Integer.parseInt(sc.nextLine().trim()); Fraction fraction = new Fraction(num, den); System.out.print("Enter the num to compare: "); num1 = Integer.parseInt(sc.nextLine().trim()); if(num1 < 0) break; System.out.print("Enter the den to compare: "); den1 = Integer.parseInt(sc.nextLine().trim()); Fraction fraction1 = new Fraction(num1, den1); if(fraction1.isequals(fraction)) { System.out.println("\nTrue-> Second fraction is equal to First Fraction"); } else System.out.println("\nFalse-> Second fraction is not equal to First Fraction"); // if isequal() returns zero. fractions.add(fraction); res = fraction.getSimplifiedFraction(); System.out.println("Fraction added to list as: " + res + "\n"); //result is stored in ‘res’ variable }while(res != "0"); //Display all fractions that are stored in the ArrayList System.out.println("\nDISPLAYING ALL FRACTIONS:\n" + "-------------------------"); //Use the loop to display the values stored in the ArrayList for(Fraction fr : fractions) fr.display(); //to print the new line System.out.println(); sc.close(); Fraction f = new Fraction(4, 8); System.out.println("1st fraction: "); f.display(); Fraction fc = new Fraction(8, 24); System.out.println("2nd fraction: "); fc.display(); Fraction res1 = f.add(fc); System.out.println("Sum: "); res1.display(); } }

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Add a private method simplify() to the following Java program that converts a fraction
to its simplest form. For example, the fraction 20 / 60 should be stored in the
class instance variables as 1 / 3 (i.e. numerator = 1, denominator = 3). N.B.
you will need a method to determine the Greatest Common Divisor (GCD.
Remember, both of these methods (simplify and gcd) must be private. As
these methods are private, client programs cannot access them. So, how are
they to be used? They can only be accessed within the Fraction class. Given
their purpose, it would mean that any Fraction class method that modifies the
instance variables (e.g.: input, add, constructor, set) should call the simplify()
method to reduce the instance variables to their minimum values. Thus, these
methods are used only for housekeeping; they are not to be used by client
programs.

Program:

import java.util.ArrayList;

import java.util.Scanner;

 

//Define the class Fraction

class Fraction
{
private int n, d;

public Fraction()
{
this.n = this.d = 0; //Initialize the values
}
public Fraction(int n, int d)
{
this.n = n; //Initialize the variables
this.d = d;
}

//Define the getter function getNum() that returns the numerator
public int getNum()
{
//Returns numerator
return n;
}

//Define the getter function getDen() that returns the denominator
public int getDen()
{
//Returns denominator
return d;
}

//Define the boolean function isZero() that returns 0 if numerator is 0 and denominator is not equals to zero
public boolean isZero()
{
return(getNum() == 0 && getDen() != 0);
}

public boolean isequals(Object c)
{
Fraction f = (Fraction) c;
return(Integer.compare(n,f.n))==0 && (Integer.compare(d,f.d)==0);
}

//Define the function getSimplifiedFraction() that returns the simplified fraction
public String getSimplifiedFraction()
{
//Decalre the string variable result to store the result
String result = "";
//if the numerator and denominator both are zero
if(getNum() == 0 && getDen() == 0)
//result is zero
result = "0";
//if the numerator is zero and denominator is non-zero
else if(isZero())
//result is zero
result = "0";
//if the numerator is non-zero and denominator is zero

else if(getNum() != 0 && getDen() == 0)
//result is Undefined
result = "Undefined";
//for a defined and non-zero fraction
else
{
//if the remainder is zero
if(getNum() % getDen() == 0)
result = (getNum() / getDen()) + "";
//if the numerator and denominator both are greater than zero
else if(getNum() < 0 && getDen() < 0)
result = (getNum() * -1) + "/" + (getDen() * -1);
//if any of them is zero
else if(getNum() < 0 || getDen() < 0)
{
//if the numerator is greater than zero
if(getNum() < 0)
result = "-" + (getNum() * -1) + "/" + getDen(); // appending a sign.
//if the denominator is zero
else
result = "-" + getNum() + "/" + (getDen() * -1); // appending a sign.
}
//both are non-zero
else
result = (getNum() + "/" + getDen());
}
//return the result
return result;
}

//Define the method display() that displays the resultant fraction
public void display()
{
//Call and display the fraction
System.out.println(getSimplifiedFraction());
}

public Fraction add(Fraction rhs) {
Fraction sum = new Fraction();
sum.d = d * rhs.d;
sum.n = n * rhs.d + d * rhs.n;
sum.simplify();
return sum;
}

private void simplify()
{
int a,b;
if(Math.abs(n) > Math.abs(d))
{
a = Math.abs(n);
b = Math.abs(d);
}

else
{
a = Math.abs(d);
b = Math.abs(n);
}

int r = a%b;
while(r != 0)
{
a = b;
b = r;
r = a%b;
}

//divide numerator and denominator by b
n /= b;
d /= b;
}

}

 


class Main
{

public static void main(String[] args)
{

String res;
int num, den, num1, den1;

ArrayList<Fraction> fractions = new ArrayList<>();

Scanner sc = new Scanner(System.in);

do
{

System.out.print("Enter the num: ");

num = Integer.parseInt(sc.nextLine().trim());

if(num < 0)

break;

System.out.print("Enter the den: ");

den = Integer.parseInt(sc.nextLine().trim());

Fraction fraction = new Fraction(num, den);
System.out.print("Enter the num to compare: ");
num1 = Integer.parseInt(sc.nextLine().trim());
if(num1 < 0)
break;
System.out.print("Enter the den to compare: ");
den1 = Integer.parseInt(sc.nextLine().trim());
Fraction fraction1 = new Fraction(num1, den1);
if(fraction1.isequals(fraction))
{
System.out.println("\nTrue-> Second fraction is equal to First Fraction");
}
else
System.out.println("\nFalse-> Second fraction is not equal to First Fraction"); // if isequal() returns zero.

fractions.add(fraction);

res = fraction.getSimplifiedFraction();
System.out.println("Fraction added to list as: " + res + "\n"); //result is stored in ‘res’ variable
}while(res != "0");

//Display all fractions that are stored in the ArrayList
System.out.println("\nDISPLAYING ALL FRACTIONS:\n" + "-------------------------");
//Use the loop to display the values stored in the ArrayList
for(Fraction fr : fractions)
fr.display();
//to print the new line
System.out.println();
sc.close();

Fraction f = new Fraction(4, 8);
System.out.println("1st fraction: ");
f.display();

Fraction fc = new Fraction(8, 24);
System.out.println("2nd fraction: ");
fc.display();

Fraction res1 = f.add(fc);
System.out.println("Sum: ");
res1.display();
}
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 5 steps with 3 images

Blurred answer
Knowledge Booster
Developing computer interface
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education