-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFraction.java
More file actions
96 lines (80 loc) · 2.93 KB
/
Fraction.java
File metadata and controls
96 lines (80 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package lab6;
public class Fraction {
private int numerator;
private int denominator;
// Constructor
public Fraction(int numerator, int denominator) {
this.numerator = numerator;
if (denominator != 0)
this.denominator = denominator;
else
throw new IllegalArgumentException("Denominator cannot be zero.");
}
// Getters
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
// Setters
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public void setDenominator(int denominator) {
if (denominator != 0)
this.denominator = denominator;
else
throw new IllegalArgumentException("Denominator cannot be zero.");
}
// Addition
public void add(Fraction fraction) {
int newNumerator = this.numerator * fraction.getDenominator() +
fraction.getNumerator() * this.denominator;
int newDenominator = this.denominator * fraction.getDenominator();
simplifyAndSet(newNumerator, newDenominator);
}
// Subtraction
public void sub(Fraction fraction) {
int newNumerator = this.numerator * fraction.getDenominator() -
fraction.getNumerator() * this.denominator;
int newDenominator = this.denominator * fraction.getDenominator();
simplifyAndSet(newNumerator, newDenominator);
}
// Multiplication
public void multiplication(Fraction fraction) {
int newNumerator = this.numerator * fraction.getNumerator();
int newDenominator = this.denominator * fraction.getDenominator();
simplifyAndSet(newNumerator, newDenominator);
}
// Division
public void division(Fraction fraction) {
if (fraction.getNumerator() != 0) {
int newNumerator = this.numerator * fraction.getDenominator();
int newDenominator = this.denominator * fraction.getNumerator();
simplifyAndSet(newNumerator, newDenominator);
} else {
throw new IllegalArgumentException("Cannot divide by zero.");
}
}
// Simplify the fraction and set the numerator and denominator
private void simplifyAndSet(int newNumerator, int newDenominator) {
int gcd = gcd(Math.abs(newNumerator), Math.abs(newDenominator));
this.numerator = newNumerator / gcd;
this.denominator = newDenominator / gcd;
}
// Calculate the greatest common divisor (GCD) using Euclid's algorithm
private int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// To String
@Override
public String toString() {
return numerator + "/" + denominator;
}
}