Write a java RationalNumber class that will represent a fraction. I need to writ
ID: 639737 • Letter: W
Question
Write a java RationalNumber class that will represent a fraction. I need to write a "method add which receives a RationalNumber, adds it to this RationalNumber, and returns the result." I have written everything needed in the class except this method and would appreciate help. **How would I implement the add method to my Mixed number class also?
public class RationalNumber {
private int numerator;
private int denominator;
/**
*
* @param numerator
* @param denominator
*/
public RationalNumber(int numerator, int denominator) {
setNumerator(numerator);
setDenominator(denominator);
}
/**
* Copy Constructor
*
* @param other
*/
public RationalNumber(RationalNumber other) {
setNumerator(other.numerator);
setDenominator(other.denominator);
}
/**
* Deep Copy
*
* @return
*/
public RationalNumber copy() {
return new RationalNumber(numerator,denominator);
}
/**
*
* @param numerator
* @param denominator
*/
public void setRationalNumber(int numerator,int denominator) {
setNumerator(numerator);
setDenominator(denominator);
}
/**
* @return the numerator
*/
public int getNumerator() {
return numerator;
}
/**
* @return the denominator
*/
public int getDenominator() {
return denominator;
}
/**
* @param numerator the numerator to set
*/
public void setNumerator(int newNumerator) {
numerator = newNumerator;
}
/**
* @param denominator the denominator to set
*/
public void setDenominator(int newDenominator) {
if(newDenominator < 1) {
denominator = 1;
} else
denominator = newDenominator;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return numerator +"/"+ denominator;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + denominator;
result = prime * result + numerator;
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RationalNumber other = (RationalNumber) obj;
if (denominator != other.denominator)
return false;
if (numerator != other.numerator)
return false;
return true;
}
}
public class MixedNumber {
private int integer;
private RationalNumber number;
/**
*
* @param integer
* @param number
*/
public MixedNumber(int integer, RationalNumber number){
this.integer = integer;
this.number = number.copy();
}
/**
* Copy Constructor
*
* @param other
*/
public MixedNumber(MixedNumber other) {
this.integer = other.integer;
this.number = other.number.copy();
}
/**
* Deep Copy
*
* @return
*/
public MixedNumber copy() {
return new MixedNumber(integer,number);
}
/**
* @return the integer
*/
public int getInteger() {
return integer;
}
/**
* @param integer the integer to set
*/
public void setInteger(int integer) {
this.integer = integer;
}
/**
* @return the number
*/
public RationalNumber getNumber() {
return number.copy();
}
/**
* @param number the number to set
*/
public void setNumber(RationalNumber number) {
this.number = number.copy();
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + integer;
result = prime * result + ((number == null) ? 0 : number.hashCode());
return result;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MixedNumber other = (MixedNumber) obj;
if (integer != other.integer)
return false;
if (number == null) {
if (other.number != null)
return false;
} else if (!number.equals(other.number))
return false;
return true;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return number.toString() + integer;
}
Explanation / Answer
Here you go :)
comment if you have any doubts
public class RationalNumber {
private int numerator;
private int denominator;
/**
*
* @param numerator
* @param denominator
*/
public RationalNumber(int numerator, int denominator) {
setNumerator(numerator);
setDenominator(denominator);
}
/**
* Copy Constructor
*
* @param other
*/
public RationalNumber(RationalNumber other) {
setNumerator(other.numerator);
setDenominator(other.denominator);
}
/**
* Deep Copy
*
* @return
*/
public RationalNumber copy() {
return new RationalNumber(numerator, denominator);
}
/**
*
* @param numerator
* @param denominator
*/
public void setRationalNumber(int numerator, int denominator) {
setNumerator(numerator);
setDenominator(denominator);
}
/**
* @return the numerator
*/
public int getNumerator() {
return numerator;
}
/**
* @return the denominator
*/
public int getDenominator() {
return denominator;
}
/**
* @param numerator
* the numerator to set
*/
public void setNumerator(int newNumerator) {
numerator = newNumerator;
}
/**
* @param denominator
* the denominator to set
*/
public void setDenominator(int newDenominator) {
if (newDenominator < 1) {
denominator = 1;
} else
denominator = newDenominator;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return numerator + "/" + denominator;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + denominator;
result = prime * result + numerator;
return result;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RationalNumber other = (RationalNumber) obj;
if (denominator != other.denominator)
return false;
if (numerator != other.numerator)
return false;
return true;
}
public RationalNumber add(RationalNumber number) {
int newNumerator = this.numerator * number.denominator
+ this.denominator * number.denominator;
int newDenominator = this.denominator * number.denominator;
int gcm = gcm(newNumerator,newDenominator);
RationalNumber result = new RationalNumber((newNumerator / gcm), (newDenominator / gcm));
return result;
}
public int gcm(int a,int b) {
return b == 0 ? a : gcm(b, a % b);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.