SHARE
SPREAD
HELP

The Tradition of Sharing

Help your friends and juniors by posting answers to the questions that you know. Also post questions that are not available.


To start with, Sr2Jr’s first step is to reduce the expenses related to education. To achieve this goal Sr2Jr organized the textbook’s question and answers. Sr2Jr is community based and need your support to fill the question and answers. The question and answers posted will be available free of cost to all.

 

#
Authors:
Walter Savitch ,kenrick Mock
Chapter:
Defining Classes I
Exercise:
Programming Projects
Question:2 | ISBN:9780132830317 | Edition: 5

Question

Define a class called Fraction . This class is used to represent a ratio of two integers. Include mutator methods that allow the user to set the numerator and the denominator. Also include a method that returns the value of numerator divided by denominator as a double . Include an additional method that outputs the value of the fraction reduced to lowest terms (e.g., instead of outputting 20/60, the method should output 1/3). This will require finding the greatest common divisor for the numerator and denominator, then dividing both by that number. Embed your class in a test program.


TextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbook

Answer

Program:

// Fraction.java
public class Fraction 
{
	private int numerator;
	private int denominator;
	
	public Fraction()
	{
		numerator = 0;
		denominator = 1;
	}
	
	public Fraction(int newNumerator)
	{
		numerator = newNumerator;
		denominator = 1;
	}
	
	public Fraction(int newNumerator, int newDenominator)
	{
		setNumerator(newNumerator);
		setDenominator(newDenominator);
	}
	
	public void setNumerator(int newNumerator)
	{
		numerator = newNumerator;
	}
	
	public void setDenominator(int newDenominator)
	{
		if(newDenominator != 0)
			denominator = newDenominator;
		else
			denominator = 1;
	}
	
	public int getNumerator()
	{
		return numerator;
	}
	
	public int getDenominator()
	{
		return denominator;
	}
	
	public double getFractionValue()
	{		
		return (double)numerator / denominator;
	}
	
	public String toString()
	{
		reduceFraction();
		return numerator + "/" + denominator;
	}
	
	public void printFraction()
	{
		reduceFraction();
		System.out.println(numerator + "/" + denominator);
	}
	
	private void reduceFraction() 
	{
		int n = numerator;
		int d = denominator;

		while (n != 0) 
		{
			int temp = n;
			n = d % n;
			d = temp;
		}

		numerator = numerator / d;
		denominator = denominator / d;
	}
}
// FractionDemo.java
public class FractionDemo 
{
	public static void main(String[] args) 
	{
		Fraction frac1 = new Fraction(20, 60);
		Fraction frac2 = new Fraction(180, 120);
		Fraction frac3 = new Fraction(35, 49);
		
		System.out.println("Fraction #1: " + frac1);
		System.out.println("Fraction #2: " + frac2);
		System.out.println("Fraction #3: " + frac3);
	}
}

Output:

Fraction #1: 1/3
Fraction #2: 3/2
Fraction #3: 5/7

 

0 0

Discussions

Post the discussion to improve the above solution.