In: Computer Science
Define a class Fraction3YourName as follows,
/**
* Program Name: Fraction3YourName.java
* Discussion: Fraction3Yourname class
* written By:
* Date: 2019/09/19
*/
public class Fraction3YourName {
private int sign;
private int num;
private int denom;
public Fraction3YourName() {
//sign = ;
//denom = ;
}
public Fraction3YourName(int n) {
//sign = ;
//num = n;
//denom = ;
}
public Fraction3YourName(int s, int n, int d) {
//sign = s;
//num = n;
//denom = d;
}
}
You are asked to
Complete the definitions for the given constructors; and
Provide additional method members to allow the performance of
four simple
arithmetic operations: (1) Addition, (2) Subtraction, (3)
Multiplication, and (4)
Division; and
Provide one method member print() to display the
Fraction3YourName object.
/** REQUIRED PROGRAM OUTPUT
****************************************
* MENU – HW #3 *
* (1) Creating 2 Fraction3 Objects *
* (2) Performing Arithmetic Operations *
* (3) Displaying Fraction3 Objects *
* (4) Quit *
****************************************
Enter your option (1 through 4): 5
You are funny!
****************************************
* MENU – HW #3 *
* (1) Creating 2 Fraction3 Objects *
* (2) Performing Arithmetic Operations *
* (3) Displaying Fraction3 Objects *
* (4) Quit *
****************************************
Enter your option (1 through 4): 2
Creating 2 Fraction3 Objects –
// Your details
****************************************
* MENU – HW #3 *
* (1) Creating 2 Fraction3 Objects *
* (2) Performing Arithmetic Operations *
* (3) Displaying Fraction3 Objects *
* (4) Quit *
****************************************
Enter your option (1 through 4): 3
Displaying Fraction3 Objects –
// Your details
****************************************
* MENU – HW #3 *
* (1) Creating 2 Fraction3 Objects *
* (2) Performing Arithmetic Operations *
* (3) Displaying Fraction3 Objects *
* (4) Quit *
****************************************
Enter your option (1 through 4): 4
Performing Arithmetic Operations –
// Your details
****************************************
* MENU – HW #3 *
* (1) Creating 2 Fraction3 Objects *
* (2) Performing Arithmetic Operations *
* (3) Displaying Fraction3 Objects *
* (4) Quit *
****************************************
Enter your option (1 through 4): 4
Having fun!
by java programming
Please find the solution and rate the answer.
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
static Fractions getFraction() {
System.out.println("enter sign as - or +");
int sign = sc.next().charAt(0) == '-' ? -1 : 1;
System.out.println("Enter numerator");
int num = sc.nextInt();
System.out.println("Enter denominator");
int denom = sc.nextInt();
return new Fractions(sign, num, denom);
}
public static void main(String[] args) {
boolean loop = true;
do {
System.out.println("Enter fraction object 1");
Fractions one = getFraction();
System.out.println("Etner frac 2");
Fractions two = getFraction();
System.out.println("Multply(m),Divide(d),subtract(s),add(a),Exit(e)");
char choice;
choice = sc.next().charAt(0);
if (choice == 'e') break;
;
switch (choice) {
case 'm':
one.multiply(two);
System.out.println(one);
break;
case 'd':
one.divide(two);
System.out.println(one);
break;
case 'a':
one.add(two);
System.out.println(one);
break;
case 's':
one.subtract(two);
System.out.println(one);
break;
}
} while (loop);
//
// System.out.println(fr);
}
}
public class Fractions {
private int sign;
private int num;
private int denom;
public Fractions() {
num = 1;
denom = 1;
}
public Fractions(int n) {
setSign(n);
num = n;
}
public Fractions(int s, int n, int d) {
setSign(s);
num = n;
denom = d;
}
@Override
public String toString() {
return ""+(num*sign)+"/"+denom+"";
}
public int getSign() {
return sign;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getDenom() {
return denom;
}
public void setDenom(int denom) {
this.denom = denom;
}
private void setSign(int n) {
if (n < 0) {
sign = -1;
} else {
sign = +1;
}
}
public void add(Fractions fr) {
num = (this.num * fr.getDenom() * sign) + (fr.getNum() * denom * fr.getSign());
if(num<0){
sign=-1;
}else{
sign=1;
}
num=Math.abs(num);
denom = Math.abs(fr.getDenom() * denom);
normalize();
// sign = fr.getSign() * sign;
}
public void subtract(Fractions fr){
fr.setSign(-1*fr.getSign());
add(fr);
normalize();
}
public void multiply(Fractions fr) {
sign = fr.getSign() * sign;
num = Math.abs(fr.getNum() * num);
denom = Math.abs(fr.getDenom()*denom);
normalize();
}
private void normalize() {
int gcd = gcd(num, denom);
num = num/ gcd;
denom = denom/gcd;
}
public void divide(Fractions fr) {
sign = fr.getSign() * sign;
num = Math.abs(num * fr.getDenom());
denom = Math.abs(fr.getNum() * denom);
normalize();
}
int gcd(int one, int two)
{
if (one == 0)
return two;
if (two == 0)
return one;
if (one == two)
return one;
if (one > two)
return gcd(one-two, two);
return gcd(one, two-one);
}
}
Sample out:
