-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFraction.java
More file actions
132 lines (102 loc) · 3.03 KB
/
Copy pathFraction.java
File metadata and controls
132 lines (102 loc) · 3.03 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/**
* Created by keith for the second coursework assignment.
*/
public class Fraction {
private int numerator;
private int denominator;
public Fraction(int num, int denom) {
if (denom == 0) {
System.out.println("Invalid fraction with denominator 0");
// this should use exceptions
return;
}
int gcd = myGcd(num, denom);
setNumerator(num / gcd);
setDenominator(denom / gcd);
}
@Override
public String toString() {
return "" + getNumerator() + '/' + getDenominator();
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int num) {
numerator = num;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int num) {
denominator = num;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Fraction fraction = (Fraction) o;
if (getDenominator() != fraction.getDenominator()) return false;
if (getNumerator() != fraction.getNumerator()) return false;
return true;
}
@Override
public int hashCode() {
int result = numerator;
result = 31 * result + denominator;
return result;
}
public Fraction multiply(Fraction other) {
int num = this.getNumerator() * other.getNumerator();
int denom = this.getDenominator() * other.getDenominator();
return new Fraction(num, denom);
}
public Fraction add(Fraction other) {
int num1 = this.getNumerator() * other.getDenominator();
int num2 = this.getDenominator() * other.getNumerator();
int denom = this.getDenominator() * other.getDenominator();
int num = num1 + num2;
return new Fraction(num, denom);
}
public Fraction divide(Fraction other) {
int num = this.getNumerator() * other.getDenominator();
int denom = this.getDenominator() * other.getNumerator();
return new Fraction(num, denom);
}
public Fraction subtract(Fraction other) {
int num1 = this.getNumerator() * other.getDenominator();
int num2 = this.getDenominator() * other.getNumerator();
int denom = this.getDenominator() * other.getDenominator();
int num = num1 - num2;
return new Fraction(num, denom);
}
public Fraction absolute() {
int num;
int denom;
if (this.getNumerator() < 0) {
num = this.getNumerator() * -1;
denom = this.getDenominator();
}
else if (this.getDenominator() < 0) {
denom = this.getDenominator() * -1;
num = this.getNumerator();
}
else {
num = this.getNumerator();
denom = this.getDenominator();
}
return new Fraction(num, denom);
}
public Fraction negate() {
int num = this.getNumerator() * -1;
int denom = this.getDenominator();
return new Fraction(num, denom);
}
private int myGcd(int a, int b) {
while (b != 0) {
int t = b;
b = a % b;
a = t;
}
return a;
}
}