• 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.
  • Popular Now

  • Posts

    • considering that took 4 years "to fix" ryzen performance on windows 11. look at the amount of time that AMD user have a degraded performance compared to intel on microsoft latest and greatest OS
    • MosaLingua Language Learning lifetime subscription price dropped by 97% by Steven Parker Today's highlighted deal lets you save 97% off lifetime access to a MosaLingua Language Learning Fluency Bundle. Buying link below. Description: Learning new languages doesn't have to be difficult or exhausting. In fact, you can learn and speak a foreign language at your own pace. MosaLingua is an all-in-one platform for learning the most useful words and expressions in the language of your choice, practicing language immersion, and improving your language skills with numerous different resources. Pick up the skills you need to use the language in any situation and store up to 6,000 keywords and expressions in your long-term memory, and choose content depending on your needs and your level. MosaLingua is a personalized language learning tool that adjusts to your level and your schedule, letting you make quick progress and avoid time-wasters. Access to 11 Full Language Courses: English, Spanish, French, Italian, German, Portuguese, Russian, Chinese, Japanese, Korean, and Arabic—plus any new languages we add in the future, at no extra cost. Science-Based Learning Method: Spaced repetition, neuroscience, cognitive psychology, and the 80/20 rule combine to help you retain vocabulary & speak faster. All-in-One Learning App: Practice listening, speaking, reading, and writing in one place with dialogues, flashcards, videos, audiobooks, grammar lessons & hands-on exercises. AI-Powered Coaching & Tools: Practice with MosaChat-AI, your 24/7 virtual tutor that helps you improve your writing and speaking skills with personalized feedback. Learn from the Content You Love: Thanks to MosaDiscovery, you can turn any online content into a learning opportunity. Learn languages by watching YouTube videos, Netflix series, reading articles, or exploring any website—with instant translations, personalized flashcards, and real-world vocabulary. Offline Mode & Cross-Platform Sync: Learn on your terms—anywhere, anytime. Use the app on iOS, Android, or the web. Built for Busy People Who Want Quick Results: Make real progress with just 10 minutes per day. Short, targeted sessions fit into any schedule. Good to know Length of access: lifetime Redemption deadline: redeem your code within 30 days of purchase Access options: desktop or mobile Max number of device(s): 1 Only available to NEW users Version: latest Updates included Lifetime access to MosaLingua Language Learning normally costs $4,850, but you can pick it up for just $97.99 for a limited time that's a saving of $4,702 off. For a full description, specs, and info, click the link below. Mosalingua: Lifetime Subscription now just $97.99 (was $4,850) Although priced in U.S. dollars, this deal is available for digital purchase worldwide. We post these because we earn commission on each sale so as not to rely solely on advertising, which many of our readers block. It all helps toward paying staff reporters, servers and hosting costs. Other ways to support Neowin Whitelist Neowin by not blocking our ads Create a free member account to see fewer ads Make a donation to support our day to day running costs Subscribe to Neowin - for $14 a year, or $28 a year for an ad-free experience Disclosure: Neowin benefits from revenue of each sale made through our branded deals site powered by StackCommerce.
    • you know what, looking at it again. you're right, i'm wrong. there are no curves. it's just straight lines. it's flat.
  • 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
      449
    2. 2
      +FloatingFatMan
      249
    3. 3
      snowy owl
      239
    4. 4
      ATLien_0
      196
    5. 5
      Xenon
      141
  • Tell a friend

    Love Neowin? Tell a friend!