package uebung02.rationals; public class Rational { private final int num, denom; Rational(int num, int denom) { if (denom == 0) { throw new IllegalArgumentException("Zahl darf nicht 0 sein!"); } else { int gcd = gcDivider(num, denom); if (denom < 0) { this.num = -num / gcd; this.denom = -denom / gcd; } else { this.num = num / gcd; this.denom = denom / gcd; } } } Rational (int num) { this(num, 1); } private int gcDivider(int x, int y) { //return x == 0 ? y : gcDivider(y % x, x); if (x == 0) { return y; } else { return gcDivider(y % x, x); } } public int getNum() { return num; } public int getDenom() { return denom; } public Rational add(Rational other) { return new Rational(num * other.getDenom() + denom * other.getNum(), denom * other.getDenom()); } public Rational add(int i) { return add(new Rational(i)); } public Rational sub(Rational r) { return new Rational(num * r.denom - denom * r.num, denom * r.denom); } public Rational sub(int i) { return this.sub(new Rational(i)); } public Rational mult(Rational r) { return new Rational(num * r.num, denom * r.denom); } public Rational mult(int i) { return mult(new Rational(i)); } public Rational div(Rational r) { return new Rational(num * r.denom, denom * r.num); } public Rational div(int i) { return div(new Rational(i)); } @Override public String toString() { if (denom == 1) { return "" + num; } else { return num + "/" + denom; } } public boolean lessThan(Rational r) { return this.sub(r).num < 0; } public boolean lessThan(int i) { return this.sub(i).num < 0; } public boolean greaterThan(Rational r) { return this.sub(r).num > 0; } public boolean greaterThan(int i) { return this.sub(i).num > 0; } public boolean lessThanOrEqual(Rational r) { return this.sub(r).num <= 0; } public boolean lessThanOrEqual(int i) { return this.sub(i).num <= 0; } public boolean greaterThanOrEqual(Rational r) { return this.sub(r).num >= 0; } public boolean isEqual(Rational r) { return this.num == r.num && this.denom == r.denom; } public boolean isEqual(int i) { return this.isEqual(new Rational(i)); } }