• 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
https://www.neowin.net/forum/topic/232590-java-adding-rational-numbers/
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.

  • 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();

  • 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).

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

    • No registered users viewing this page.
  • Posts

    • There was a time, years ago, I would have been interested in this. Not anymore.
    • Until you visit a website that is built for Chrome.
    • The truck that is banned from the U.K, due to it not being safe. I love it.
    • Because I like to watch 4K video on my 65" TV, and there's no adblockers (yet) on AppleTV.
    • Tesla now sells Cybertruck with 0% APR, the biggest discount ever by Hamid Ganji Cybertruck was a highly anticipated Tesla car that could never fulfill its potential. The EV maker is now striving to increase Cybertruck sales by offering interest-free financing to buyers in the United States. According to Tesla's announcement, US-based customers can now buy a Cybertruck with a 0 percent Annual Percentage Rate (APR). This is one of the biggest discounts Tesla has ever announced for its EV models, and it is given to buyers who choose Tesla's $8,000 Full Self-Driving Package. The offer is valid until the end of this month. While the Tesla Model 3 and Model Y were already on sale with 0% APR, extending the same subsiding plan to the Cybertruck could potentially cost Tesla significant money. The Tesla Cybertruck with Self-Driving Package currently costs around $88,000. A 0 percent APR means the automaker loses around $10,000 in the financing process, which could affect its bottom line. Offering financial incentives to buyers is a common practice among automakers. However, Cybertruck sales have declined significantly over the past year, exceeding its US inventory to over 10,000 units in May. In 2019, after Cybertruck's announcement, Tesla claimed it had received over 1 million requests for its latest EV. At the time, the automaker said each Cybertruck costs $39,900 and makes it to the market in 2021. However, the EV truck finally reached the market in 2023 with a $60,990 price tag. Also, the tri-motor version of Cybertruck was advertised with a range of 500 miles, but this version arrived at the market with a range of 320 miles. Following Elon Musk's controversies in the Department of Government Efficiency, Tesla sales dwindled worldwide, and even many people decided to boycott the EV maker. Tesla's report for Q1 2025 shows the company's profit has declined by 71 percent. Also, after Elon Musk's recent faceoff with US President Donald Trump, Tesla stock fell 14 percent, leading to a $152 billion loss in market cap.
  • Recent Achievements

    • One Month Later
      EdwardFranciscoVilla earned a badge
      One Month Later
    • One Month Later
      MoyaM earned a badge
      One Month Later
    • One Month Later
      qology earned a badge
      One Month Later
    • One Year In
      Frinco90 earned a badge
      One Year In
    • Apprentice
      Frinco90 went up a rank
      Apprentice
  • Popular Contributors

    1. 1
      +primortal
      453
    2. 2
      +FloatingFatMan
      247
    3. 3
      snowy owl
      237
    4. 4
      ATLien_0
      198
    5. 5
      Xenon
      145
  • Tell a friend

    Love Neowin? Tell a friend!