java program 2 Rational Implement a class to represent rational numbers. Each ra
ID: 3843251 • Letter: J
Question
java program
2 Rational Implement a class to represent rational numbers. Each rational number consists of a numerator and a denominator, both of type int. Since each rational number has its own numerator and denominator, these must be instance variables. Furthermore, good object-oriented programming suggests that the visibility of the variables should be private. 3 Constructors The class Rational has two constructors. One of them has two formal parameters, which provide the initial values for both instance variables. The other constructor has a single parameter, which provides the initial value for the numerator: the denominator is assumed to be 1 4 getters Implement access methods that return the numerator and denominator of this rational, but no setter methods. An object that has no setter methods, and no other methods forExplanation / Answer
Rational.java
public class Rational {
private int numerator, denominator;
//Parameterized constructor
public Rational(int a, int b){
numerator = a;
denominator = b;
if (denominator < 0){
denominator = denominator * -1;
numerator = numerator * -1;
}else if (denominator == 0){
denominator = 1;
numerator = 0;
}
Rational.this.reduce();
}
//Default constructor
public Rational(){
denominator = 1;
numerator = 0;
}
//Setters and Getters
public void setNumerator(int a){
numerator = a;
Rational.this.reduce();
}
public int getNumerator(){
return numerator;
}
public void setDenominator(int b){
if (b < 0){
b = b * -1;
denominator = b;
if (numerator < 0){
;
}else{
numerator = getNumerator() * -1;
}
}else if (b == 0){
setNumerator(0);
setDenominator(1);
}else{
denominator = b;
}
Rational.this.reduce();
}
public int getDenominator(){
return denominator;
}
//Method which displays the Rational Number
public String toString(){
String stringFormat = numerator + " / " + denominator;
return stringFormat;
}
//Method which comparing two rational numbers
public int compareTo(Rational a){
int thisRational = numerator * a.getDenominator();
int otherRational = a.getNumerator() * denominator;
if (thisRational < otherRational){
return -1;
}else if (thisRational > otherRational ){
return 1;
}else{
return 0;
}
}
//Method which adding two rational numbers
public Rational plus(Rational other){
int num1 = numerator;
int denom1 = denominator;
int num2 = other.getNumerator();
int denom2 = other.getDenominator();
int num3 = (num1 * denom2) + (num2 * denom1);
int denom3 = denom1 * denom2;
Rational r1 = new Rational(num3, denom3);
return r1;
}
//Method which reduce the rational number
public String reduce( )
{
// determine the greatest common divisor
int gcd = this.gcd(numerator, denominator);
// if GCD is negative, change to positive
if (gcd < 0)
{
gcd = -gcd;
}
// divide gcd into both numerator and denominator
numerator = numerator / gcd;
denominator = denominator / gcd;
return numerator+"/"+denominator;
}
//Method which calculate the GCD
private Integer gcd(Integer a, Integer b)
{
// "private"
// % is modulus which is the remainder of a division
// base case
if ((a % b) == 0) {
return b;
}
// recursive case
else {
return gcd(b, a % b);
}
}
//This method checks Whether the two Rational Numbers are equal or not
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rational other = (Rational) obj;
if (denominator != other.denominator)
return false;
if (numerator != other.numerator)
return false;
return true;
}
}
____________________
Test.java
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Scanner sc1 = new Scanner(System.in);
while (true) {
//Getting the First Rational number From the user
System.out.println(":: Enter Rational No 1 ::");
System.out.print("Enter Numerator =");
int num1 = sc.nextInt();
System.out.print("Enter Denominator =");
int denom1 = sc.nextInt();
//Getting the second Rational number From the user
System.out.println(":: Enter Rational No 2 ::");
System.out.print("Enter Numerator =");
int num2 = sc.nextInt();
System.out.print("Enter Denominator =");
int denom2 = sc.nextInt();
//Creating the objects to Rational Class
Rational r = new Rational(num1, denom1);
Rational r1 = new Rational(num2, denom2);
System.out.println(" ");
// Reducing the Rational Numbers
System.out.println("** Rational Reduced Forms **");
String red = r.reduce();
String red1 = r1.reduce();
System.out.println("(" +num1+"/"+denom1+") reduced to :" + red);
System.out.println("(" +num2+"/"+denom2+") reduced to :" + red1);
System.out.println(" ** Adding two Rational Numbers **");
// Addition of two Rational Numbers
Rational radd = r.plus(r1);
System.out.println("(" + r.toString() + ") +" + "(" + r1.toString()+ ") = " + radd);
System.out.println(" ** Comparing two Rational Numbers **");
// Comparing Two Rational Numbers
int com = r.compareTo(r1);
if (com == -1)
System.out.println("(" + r.toString() + ") < (" + r1.toString()+ ")");
else
System.out.println("(" + r.toString() + ") > (" + r1.toString()
+ ")");
System.out.println(" ** Checking two Rational Numbers are equal or not **");
boolean bool=r.equals(r1);
if(bool==true)
System.out.println(r.toString()+" is equal to "+r1.toString());
else
System.out.println(r.toString()+" is not equal to "+r1.toString());
System.out.println(" ");
System.out.print("Do you want to continue(Y/N):");
char c = sc1.next(".").charAt(0);
if (c == 'Y' || c == 'y')
continue;
else {
System.out.println(":: Program Exit ::");
break;
}
}
}
}
________________________
output:
:: Enter Rational No 1 ::
Enter Numerator =5
Enter Denominator =25
:: Enter Rational No 2 ::
Enter Numerator =25
Enter Denominator =125
** Rational Reduced Forms **
(5/25) reduced to :1/5
(25/125) reduced to :1/5
** Adding two Rational Numbers **
(1 / 5) +(1 / 5) = 2 / 5
** Comparing two Rational Numbers **
(1 / 5) > (1 / 5)
** Checking two Rational Numbers are equal or not **
1 / 5 is equal to 1 / 5
Do you want to continue(Y/N):n
:: Program Exit ::
_____________Thank You
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.