• 0

[JAVA] Adding rational numbers...


Question

So far, I have this, and I have more to go, but I'm confused about something. Ok, I'm supposed to use this as a function:

public Rational add(Rational a)

and then call something like:

Rational r3 = r1.add(r2);

I haven't seen any implementation on this before, any help would be appreciated on how to write the add function.

public class Rational {
	private int numerator;
	private int denominator;

	public void setNumerator(int n) {
  numerator = n;
	}
	public void setDenominator(int d) {
  denominator = d;
	}
	public Rational() {}
	public Rational(int n, int d) {
  numerator = n;
  denominator = d;
	}
	public Rational add(Rational a) {
  
	}

}

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Without a getNumerator and getDenominator function you can't do anything.

Other than that, you make a new Rational and find the LCD and set that as the denominator and of course multiply the numerators by whatever you did to get their respective denominators to the LCD and then add those and set the numerator of the new Rational and return it.

Link to comment
Share on other sites

  • 0

I understand I need get functions, I have yet to add them, but I was just wondering what some of the actual code would look like in the add function to get me started. How does r1.add(r2) actually get r1 into the function?

Link to comment
Share on other sites

  • 0

r1 is the one you're calling with, so it can always access it's own variables.

Rational add(Rational r2) {

return new Rational(mult1*numerator+mult2*r2.getNumerator(),lcd);

}

Of course you'll need to figure out lcd and mult1 and mult2.

Link to comment
Share on other sites

  • 0

  private void reduce() {
      if (numerator != 0) {
         int common = gcd(Math.abs(numerator), denominator);
         numerator = numerator / common;
         denominator = denominator / common;
      }
   }

   private int gcd(int num1, int num2) {
      while (num1 != num2)
         if (num1 > num2)
            num1 = num1 - num2;
         else
            num2 = num2 - num1;
      return num1;
   }

So, these methods I would use to find the actual fraction, setting numerator and denominator. Would reduce just be adding in like r1.reduce(), and r2.reduce();

Link to comment
Share on other sites

  • 0

No, those seems to be just for reducing one fraction, not finding the addition of them, unless you plan to do

Rational add(Rational r2) {
int tempNumerator = r2.getDenominator()*numerator + denominator*r2.getNumerator();
int tempDenominator = r2.getDenominator()*denominator;
int common = gcd(Math.abs(tempNumerator),tempDenominator;
return new Rational(tempNumerator/common,tempDenominator/common);
}

Note I got rid of reduce because for it to work you'd need to return 2 values, numerator and denominator since you don't want to have the temp ones as globals and you don't want to set the values in your numerator and denominator for the Rational you're calling (r1).

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.