The document defines a Fraction class with methods to represent fractions, multiply fractions, and reduce fractions to their lowest terms. It includes constructors to initialize fractions to default or custom values, getter and setter methods, and a main method that demonstrates creating and manipulating Fraction objects.
import java.util.Scanner;public class Fraction { instan.pdf
1. import java.util.Scanner;
public class Fraction {
/**
* instance variable
*/
private int numerator;
/**
* instance variable
*/
private int denominator;
/**
* param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final Fraction f1 = new Fraction();
final Fraction f2 = new Fraction(10, 15);
final Fraction f3 = new Fraction();
Fraction f4 = new Fraction();
Fraction f5;
f3.setNumerator(14);
f3.setDenominator(16);
f1.print();
f2.print();
f3.print();
// f1.get();
// f1.print();
f4.assign(12, 50);
f4.print();
f5 = Fraction.multiply(f2, f4);
f5.print();
System.out.println(" f2: ");
f2.print();
f2.multiply(f4);
2. System.out.println(" f2: ");
f2.print();
}
/**
* default constructor
* initlizing numerator with 0 and denominator with 1
*/
public Fraction() {
// System.out.println("In default construction");
numerator = 0;
denominator = 1;
}
/**
* param n
* param d
*/
public Fraction(final int n, final int d) {
// System.out.println("In Parameter construction");
numerator = n;
denominator = d;
}
/**
* return numerator
*/
public int getNumerator() {
return numerator;
}
/**
* param numerator
*/
public void setNumerator(final int numerator) {
this.numerator = numerator;
}
3. /**
* return denominator
*/
public int getDenominator() {
return denominator;
}
/**
* param denominator
*/
public void setDenominator(final int denominator) {
this.denominator = denominator;
}
/**
* print fraction
*/
public void print() {
System.out.print(numerator + "/" + denominator + " ");
}
/**
*
*/
public void get() {
final Scanner kb = new Scanner(System.in);
System.out.print(" Enter numerator: ");
numerator = kb.nextInt();
System.out.print("Enter denominator: ");
denominator = kb.nextInt();
kb.close();
}
/**
* param n
* param d
*/
public void assign(final int n, final int d) {
if (d == 0) {
4. throw new IllegalArgumentException("denominator can not be 0");
}
if (n < 0 || d < 0) {
throw new IllegalArgumentException("values must be positive");
}
numerator = n;
denominator = d;
reduce();
}
/**
* it reduce numerator and denominator by GCD of numerator and denominator
*/
private void reduce() {
int min = numerator;
int gcd;
if (numerator > denominator) {
min = denominator;
}
for (gcd = min; gcd > 1; gcd--) {
if (numerator % gcd == 0 && denominator % gcd == 0) {
break;
}
}
numerator = numerator / gcd;
denominator = denominator / gcd;
}
/**
* param f1
* param f2
* return f
*/
public static Fraction multiply(Fraction f1, Fraction f2) {
Fraction f = new Fraction();
int num;
int den;
num = f1.getNumerator() * f2.getNumerator();
5. den = f1.getNumerator() * f2.getDenominator();
f.assign(num, den);
f.reduce();
return f;
}
/**
* param f
*/
public void multiply(Fraction f) {
this.numerator = this.numerator * f.getNumerator();
this.denominator = this.denominator * f.getDenominator();
this.reduce();
return;
}
}
Solution
import java.util.Scanner;
public class Fraction {
/**
* instance variable
*/
private int numerator;
/**
* instance variable
*/
private int denominator;
/**
* param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final Fraction f1 = new Fraction();
final Fraction f2 = new Fraction(10, 15);
6. final Fraction f3 = new Fraction();
Fraction f4 = new Fraction();
Fraction f5;
f3.setNumerator(14);
f3.setDenominator(16);
f1.print();
f2.print();
f3.print();
// f1.get();
// f1.print();
f4.assign(12, 50);
f4.print();
f5 = Fraction.multiply(f2, f4);
f5.print();
System.out.println(" f2: ");
f2.print();
f2.multiply(f4);
System.out.println(" f2: ");
f2.print();
}
/**
* default constructor
* initlizing numerator with 0 and denominator with 1
*/
public Fraction() {
// System.out.println("In default construction");
numerator = 0;
denominator = 1;
}
/**
* param n
* param d
*/
public Fraction(final int n, final int d) {
// System.out.println("In Parameter construction");
numerator = n;
7. denominator = d;
}
/**
* return numerator
*/
public int getNumerator() {
return numerator;
}
/**
* param numerator
*/
public void setNumerator(final int numerator) {
this.numerator = numerator;
}
/**
* return denominator
*/
public int getDenominator() {
return denominator;
}
/**
* param denominator
*/
public void setDenominator(final int denominator) {
this.denominator = denominator;
}
/**
* print fraction
*/
public void print() {
System.out.print(numerator + "/" + denominator + " ");
}
8. /**
*
*/
public void get() {
final Scanner kb = new Scanner(System.in);
System.out.print(" Enter numerator: ");
numerator = kb.nextInt();
System.out.print("Enter denominator: ");
denominator = kb.nextInt();
kb.close();
}
/**
* param n
* param d
*/
public void assign(final int n, final int d) {
if (d == 0) {
throw new IllegalArgumentException("denominator can not be 0");
}
if (n < 0 || d < 0) {
throw new IllegalArgumentException("values must be positive");
}
numerator = n;
denominator = d;
reduce();
}
/**
* it reduce numerator and denominator by GCD of numerator and denominator
*/
private void reduce() {
int min = numerator;
int gcd;
if (numerator > denominator) {
min = denominator;
}
for (gcd = min; gcd > 1; gcd--) {
9. if (numerator % gcd == 0 && denominator % gcd == 0) {
break;
}
}
numerator = numerator / gcd;
denominator = denominator / gcd;
}
/**
* param f1
* param f2
* return f
*/
public static Fraction multiply(Fraction f1, Fraction f2) {
Fraction f = new Fraction();
int num;
int den;
num = f1.getNumerator() * f2.getNumerator();
den = f1.getNumerator() * f2.getDenominator();
f.assign(num, den);
f.reduce();
return f;
}
/**
* param f
*/
public void multiply(Fraction f) {
this.numerator = this.numerator * f.getNumerator();
this.denominator = this.denominator * f.getDenominator();
this.reduce();
return;
}
}