Java Program public class Fraction instance variables int n
Java Program
public class Fraction {
//instance variables
int num;
int den;
//default construtcor
Fraction()
{
num=0;
den=1;
}
//parametrized constructor
Fraction(int n,int d)
{
num=n;
den=d;
}
//print fraction object
public void print()
{
System.out.println(num+\"/\"+den);
}
//return double value of fraction
public void printAsDouble()
{
try
{
double div=(double)num/(double)den;
System.out.println(div);
}
catch(ArithmeticException e)
{
System.out.println(\"infinity\");
}
catch(Exception e)
{
System.out.println(e);
}
}
//add two fractions
public Fraction add(Fraction param)
{
int tnum=(this.num *param.den)+(this.den*param.num);
int tden=this.den*param.den;
this.num=tnum;
this.den=tden;
return this;
}
//multiply two fractions
public Fraction multiply(Fraction param)
{
int tnum=(this.num *param.num);
int tden=this.den*param.den;
this.num=tnum;
this.den=tden;
return this;
}
}
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
Fraction c, d, x; // Fraction objects
System.out.println(\"Enter numerator; then denominator.\");
c = new Fraction(stdIn.nextInt(), stdIn.nextInt());
c.print();
System.out.println(\"Enter numerator; then denominator.\");
d = new Fraction(stdIn.nextInt(), stdIn.nextInt());
d.print();
x = new Fraction(); // create a fraction for number 0
System.out.println(\"Sum:\");
x.add(c).add(d);
x.print();
x.printAsDouble();
x = new Fraction(1, 1); // create a fraction for number 1
System.out.println(\"Product:\");
x.multiply(c).multiply(d);
x.print();
x.printAsDouble();
System.out.println(\"Enter numerator; then denominator.\");
x = new Fraction(stdIn.nextInt(), stdIn.nextInt());
x.printAsDouble();
} //end main
Modify the code so that it can handle negative numerators and negative denominators, and provide a helping method that performs fraction reduction. Sample session using negative numbers and reduction Enter numerator, then denominator. -5 -8 5/8 Enter numerator, then denominator. 4 -10 2/5 Sum: 9/40 0.225 Product: 0.25 Enter numerator, then denominator. 0 -0 indeterminateSolution
//Fraction.java
import java.util.Scanner;
public class Fraction {
//instance variables
int num;
int den;
//default construtcor
Fraction()
{
num=0;
den=1;
}
// greatest common divisor to reduce fraction
int gcd(int n1, int n2)
{
if (n2 != 0)
return gcd(n2, n1 % n2);
else
return n1;
}
//parametrized constructor
Fraction(int n,int d)
{
num=n;
den=d;
if(d == 0)
{
System.out.println(\"indeterminate\");
System.exit(1);
}
int hcf = gcd(num,den);
num = num/hcf;
den = den/hcf;
}
//print fraction object
public void print()
{
if( (num < 0 && den > 0))
System.out.println(num+\"/\"+den);
else if((num > 0 && den < 0))
System.out.println(\"-\" + num+\"/\"+ (-1*den));
else if(num < 0 && den < 0)
System.out.println( (-1*num)+\"/\"+ (-1*den));
else
System.out.println(num+\"/\"+den);
}
//return double value of fraction
public void printAsDouble()
{
try
{
double div=(double)num/(double)den;
System.out.println(div);
}
catch(ArithmeticException e)
{
System.out.println(\"infinity\");
}
catch(Exception e)
{
System.out.println(e);
}
}
//add two fractions
public Fraction add(Fraction param)
{
int tnum=(this.num *param.den)+(this.den*param.num);
int tden=this.den*param.den;
this.num=tnum;
this.den=tden;
// simplify fraction
int hcf = gcd(num,den);
num = num/hcf;
den = den/hcf;
return this;
}
//multiply two fractions
public Fraction multiply(Fraction param)
{
int tnum=(this.num *param.num);
int tden=this.den*param.den;
this.num=tnum;
this.den=tden;
// simplify fraction
int hcf = gcd(num,den);
num = num/hcf;
den = den/hcf;
return this;
}
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
Fraction c, d, x; // Fraction objects
System.out.println(\"Enter numerator; then denominator.\");
c = new Fraction(stdIn.nextInt(), stdIn.nextInt());
c.print();
System.out.println(\"Enter numerator; then denominator.\");
d = new Fraction(stdIn.nextInt(), stdIn.nextInt());
d.print();
x = new Fraction(); // create a fraction for number 0
System.out.println(\"Sum:\");
x.add(c).add(d);
x.print();
x.printAsDouble();
x = new Fraction(1, 1); // create a fraction for number 1
System.out.println(\"Product:\");
x.multiply(c).multiply(d);
x.print();
x.printAsDouble();
System.out.println(\"Enter numerator; then denominator.\");
x = new Fraction(stdIn.nextInt(), stdIn.nextInt());
x.printAsDouble();
} //end main
}
/*
output:
Enter numerator; then denominator.
-5
-8
5/8
Enter numerator; then denominator.
4
-10
-2/5
Sum:
9/40
0.225
Product:
-1/4
-0.25
Enter numerator; then denominator.
0
-0
indeterminate
*/






