Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package pack;
- public class Fraction implements Comparable<Fraction> {
- private int numerator, denom;
- public Fraction() {
- numerator = 0;
- denom = 1;
- }
- public Fraction(int num) {
- numerator = num;
- denom = 1;
- }
- public Fraction(int numerator, int denom) {
- this.numerator = numerator;
- this.denom = denom;
- reduce();
- }
- private void reduce() {
- int new_demoniator = denom;
- boolean bool = false;
- if (denom < 0) {
- new_demoniator = denom * -1;
- bool = true;
- }
- int gcf = gcf(numerator, new_demoniator);
- numerator = numerator / gcf;
- denom = new_demoniator / gcf;
- if (bool)
- denom *= -1;
- }
- private int gcf(int a, int b) {
- int gcf = 1;
- for (int i = 2; i <= Math.min(a, b); i++) {
- if (numerator % i == 0 && denom % i == 0)
- gcf = i;
- }
- return gcf;
- }
- public Fraction add(Fraction f) {
- int commondenom = f.denom * denom;
- int frac_nume = (commondenom / f.denom) * f.numerator;
- int frac_denom = commondenom;
- int replaced_num = (commondenom / denom) * numerator;
- replaced_num += frac_nume;
- return new Fraction(replaced_num, commondenom);
- }
- public Fraction subtract(Fraction f) {
- int commondenom = f.denom * denom;
- int frac_nume = (commondenom / f.denom) * f.numerator;
- int frac_denom = commondenom;
- int replaced_num = (commondenom / denom) * numerator;
- replaced_num -= frac_nume;
- if (replaced_num < 0) {
- commondenom *= -1;
- replaced_num *= -1;
- }
- return new Fraction(replaced_num, commondenom);
- }
- public Fraction multiply(Fraction f) {
- int frac_nume = f.numerator * numerator;
- int frac_denom = f.denom * denom;
- return new Fraction(frac_nume, frac_denom);
- }
- public Fraction divide(Fraction f) {
- int temporary = f.numerator;
- ;
- int replaced_num = f.denom;
- int new_demoniator = temporary;
- replaced_num *= numerator;
- new_demoniator *= denom;
- return new Fraction(replaced_num, new_demoniator);
- }
- public double toDecimal() {
- return (numerator + 0.0) / denom;
- }
- public int compareTo(Fraction f) {
- double decimal_one = numerator / (denom + 0.0);
- double decimal_two = f.numerator / (f.denom + 0.0);
- if (decimal_one > decimal_two)
- return 1;
- else if (decimal_one == decimal_two)
- return 0;
- else
- return -1;
- }
- public boolean equals(Fraction f) {
- double decimal_one = numerator / (denom + 0.0);
- double decimal_two = f.numerator / (f.denom + 0.0);
- return decimal_one == decimal_two;
- }
- public String toString() {
- if (denom == 1)
- return numerator + ".0";
- else
- return numerator + "/" + denom;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement