(JAVA) Write a Fraction class – that is, write your own class that will represen
ID: 3764872 • Letter: #
Question
(JAVA) Write a Fraction class – that is, write your own class that will represent a fraction in your program. Each variable of type Fraction represents a single fraction. That means that the class should have at least two member variables that should be private: the numerator and the denominator of the fraction. The class also must have the following public member functions: • Fraction(int n, int d); // constructor that defines a fraction n/d • Fraction(); // constructor that defines a default fraction of 0/1 • Fraction(Scanner s); // constructor that defines a fraction via Scanner input • double toDecimal(); // returns the decimal value of the fraction • String toString(); // returns the string form of the fraction o "numerator" if denominator is 1 o "numerator/denominator (decimal, with three decimal places)" otherwise • int getNumerator(); // returns the numerator of the fraction • int getDenominator(); // returns the denominator of the fraction • Fraction plus(Fraction f); // returns fraction + parameter • Fraction minus(Fraction f); // returns fraction - parameter • Fraction times(Fraction f); // returns fraction * parameter • Fraction divides(Fraction f); // returns fraction / parameter You have been provided a private method: • int[] simplifyFraction(int[] f); // returns simplified version of parameter Using this method, all constructors should make sure that the fraction is in reduced form. You may not change the public API – that is, any methods not listed above must be made private.
Explanation / Answer
//Fraction.java
import java.util.Scanner;
public class Fraction
{
//instance variable declarations
private int numerator;
private int denominator;
//Default constructor
public Fraction()
{
numerator=0;
denominator=1;
}
//parameter constructor
public Fraction(int n, int d)
{
numerator=n;
denominator=d;
}
//Constructor that takes Scanner class object
public Fraction(Scanner scanner)
{
//read numerator and denominator
System.out.println("Enter numerator : ");
numerator=scanner.nextInt();
System.out.println("Enter denominnator : ");
denominator=scanner.nextInt();
}
//Returns numerator
public int getNumerator()
{
return numerator;
}
//Returns denominator
public int getDenominator()
{
return denominator;
}
//Returns decimal value of fraction
public double toDecimal()
{
return (double)numerator/denominator;
}
@Override
//Returns string representaion of 3 decimals
public String toString()
{
return String.format("%.3f", ((double)numerator/denominator));
}
//Addition of fraction,f
Fraction plus(Fraction f)
{
//temporary numerator
int tempNumerator=
(this.numerator*f.getDenominator()+f.getNumerator()*this.denominator);
//temporary denominator
int tempDenominator=(this.denominator*f.getDenominator());
//return a new Fraction with numerator and denominator
return new Fraction(tempNumerator, tempDenominator);
}
//Subtraction of fraction,f
Fraction minus(Fraction f)
{
//temporary numerator
int tempNumerator=
(this.numerator*f.getDenominator()-f.getNumerator()*this.denominator);
//temporary denominator
int tempDenominator=(this.denominator*f.getDenominator());
//return a new Fraction with numerator and denominator
return new Fraction(tempNumerator, tempDenominator);
}
//Multiplication of fraction,f
Fraction times(Fraction f)
{
//temporary numerator
int tempNumerator=this.numerator*f.getNumerator();
//temporary denominator
int tempDenominator=this.denominator*f.getDenominator();
//return a new Fraction with numerator and denominator
return new Fraction(tempNumerator, tempDenominator);
}
//Division of fraction,f
Fraction divides(Fraction f)
{
//temporary numerator
int tempNumerator=this.numerator*f.getDenominator();
//temporary denominator
int tempDenominator=this.denominator*f.getNumerator();
//return a new Fraction with numerator and denominator
return new Fraction(tempNumerator, tempDenominator);
}
// Reduces a current object to lowest terms.
public Fraction simplifyFraction(Fraction fraction)
{
int common = gcd(fraction.getNumerator(), fraction.getDenominator());
int n =fraction.getNumerator()/ common;
int d =fraction.getDenominator()/ common;
return new Fraction(n, d);
}
// Returns the greatest common divisor of a and b.
private static int gcd(int a, int b)
{
if (a == 0)
return b;
if (b == 0)
return a;
if (a > b)
return gcd(b, a%b);
return gcd(a, b%a);
}
}
--------------------------------------------
/**
* The java progra TestFraction that tests the Fraction class
* by calling plus, minus ,divide and multiply methods on fraction
* objects and print the results to console.
* */
//TestFraction.java
import java.util.Scanner;
public class TestFraction
{
public static void main(String[] args)
{
Fraction f1=new Fraction();
System.out.println("Default fraction");
System.out.println(f1.toString());
Fraction f2=new Fraction(1,3);
System.out.println("Parameter fraction");
System.out.println(f2.toString());
Fraction f3=new Fraction(25,100);
System.out.println("Simplified fraction");
Fraction reducedFraction=f3.simplifyFraction(f3);
System.out.println(reducedFraction.toString());
System.out.println("Adding two fractions");
Fraction addition=f3.plus(f2);
System.out.println(addition.toString());
System.out.println("Subtracting fraction");
Fraction minus=f3.minus(f2);
System.out.println(minus.toString());
System.out.println("Multiplication of fraction");
Fraction multiplication=f3.times(f2);
System.out.println(multiplication.toString());
System.out.println("Division of fraction");
Fraction division=f3.divides(f2);
System.out.println(division.toString());
Scanner scanner=new Scanner(System.in);
System.out.println("Reading fraction");
Fraction readFraction=new Fraction(scanner);
System.out.println(readFraction.toString());
}
}
------------------------------------------------------
Sample Output:
Default fraction
0.000
Parameter fraction
0.333
Simplified fraction
0.250
Adding two fractions
0.583
Subtracting fraction
-0.083
Multiplication of fraction
0.083
Division of fraction
0.750
Reading fraction
Enter numerator :
1
Enter denominnator :
2
0.500
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.