Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Rational{
- private int n;
- private int d;
- public Rational(){
- this.setNumerator(0);
- this.setDenominator(1);
- }
- public Rational(int num){
- this.setNumerator(num);
- this.setDenominator(1);
- }
- public Rational(int num, int denom){
- this.setNumerator(num);
- this.setDenominator(denom);
- this.reduce();
- }
- public Rational( Rational r ){
- setNumerator(r.getNumerator());
- setDenominator(r.getDenominator());
- r.reduce();
- }
- private int getNumerator(){
- return this.n;
- }
- private int getDenominator(){
- return this.d;
- }
- private void setNumerator(int num){
- n = num;
- }
- private void setDenominator(int denom){
- if (denom != 0)
- d = denom;
- else
- throw new IllegalArgumentException("Denominator cannot be 0!");
- }
- private int gcd(int x, int y){
- if (y==0)
- return x;
- else
- return gcd(y, x%y);
- }
- private void reduce(){
- int divisor;
- divisor = gcd(Math.abs(n), Math.abs(d));
- System.out.println("DIVISOR IS: " + divisor);
- if (n<0 && d < 0){
- n*=-1;
- d*=-1;
- }
- else if (n > 0 && d < 0){
- n *= -1;
- d *= -1;
- }
- n = n/divisor;
- d = d/divisor;
- }
- public Rational add( Rational r){
- int newNum;
- int newDenom;
- Rational rat;
- newNum = n*r.getDenominator()+d*r.getNumerator();
- newDenom = d*r.getDenominator();
- rat = new Rational(newNum, newDenom);
- rat.reduce();
- return rat;
- }
- public Rational subtract(Rational r){
- int newNum;
- int newDenom;
- Rational rat;
- newNum = n*r.getDenominator()-d*r.getNumerator();
- newDenom = d*r.getDenominator();
- rat = new Rational(newNum, newDenom);
- rat.reduce();
- return rat;
- }
- public Rational multiply(Rational r){
- int newNum;
- int newDenom;
- Rational rat;
- newNum = n*r.getNumerator();
- newDenom = d*r.getDenominator();
- rat = new Rational(newNum, newDenom);
- rat.reduce();
- return rat;
- }
- public Rational divide(Rational r){
- int newNum;
- int newDenom;
- Rational rat;
- newNum = n*r.getDenominator();
- newDenom = d*r.getNumerator();
- rat = new Rational(newNum, newDenom);
- rat.reduce();
- return rat;
- }
- public String toString(){
- if (n == 0)
- return "0";
- if (d == 1)
- return ""+this.getNumerator();
- return "" + n + "/" + d;
- }
- public float toFloat(){
- float ratNum;
- ratNum = (float)n/d;
- return ratNum;
- }
- public boolean equals(Object obj){
- if (obj.getClass() != this.getClass())
- return false;
- if (obj == null)
- return false;
- if (!(obj instanceof Rational))
- return false;
- else{
- Rational temp = (Rational) obj;
- if(n == temp.getNumerator()){
- if(d== temp.getDenominator())
- return true;
- }
- }
- return false;
- }
- public int hashCode(){
- return this.toString().hashCode();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement