• 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

    • I absolutely hate how they are using intentionally misleading wording to scare people into "upgrading" their operating system. They could use the money they are spending on marketing to keep Windows 10 running for, like, 10 more years.
    • Poorly or not, you're confronted to a decision when you visit this kind of website.
    • This tool is for ripping CDs not burning them. So it's to save cd audio tracks as files. Simple old tool to do it. For burning I used to use Nero Burning Tools back in the day rather than the ones you listed.
    • "The company has recently announced the forming of a new agentic AI team to develop an agentic AI framework for use in robotics." I wonder if any of their executives attented, "Microsoft Build 2025" last month?
    • Microsoft Build conference to leave Seattle after years in the city by Pradeep Viswanathan Microsoft Build is a flagship annual developer conference held by Microsoft since 2011. In 2017, Microsoft relocated Build from San Francisco to its home turf in Seattle. The proximity to its main campus allowed greater participation from its own engineers and executives, offering attendees a more integrated experience. Today, Jonathan Choe revealed on X that Microsoft has decided to move its Build developer conference out of Seattle. He discovered this information via an email sent by Visit Seattle to its members. Visit Seattle is a private, non-profit destination marketing organization that promotes travel to Seattle and King County. As a result of the move, Seattle-based hotels could lose approximately 9,314 room nights annually. Surprisingly, Visit Seattle’s message included several details about Microsoft’s reasons for the change. The primary reason appears to have come from within Microsoft itself. The company feels that Build lost momentum post-COVID, and the scheduling conflict with Google I/O, a competing event, has made it harder to attract the intended audience. Microsoft’s leadership believes they can better re-energize the program and boost attendance by moving it out of Seattle. The note even suggests that Build will likely be relocated to San Francisco or Las Vegas in 2026. Another factor contributing to the decision is the condition of the city. Last month, during the conference, Microsoft leadership and attendees walked between the Hyatt Regency and the Arch building on 8th Street. Reportedly, there were complaints about the general uncleanliness of the area, the visible presence of individuals using drugs, and unhoused individuals in a recurring tent in the Arch Tunnel. Visit Seattle believes these concerns also played a role in Microsoft’s final decision to relocate Build. Given Microsoft's high-profile presence and the economic impact of the event, this relocation may spark a political storm within the Seattle mayor’s office, drawing criticism over the city’s handling of downtown conditions.
  • Recent Achievements

    • One Year In
      Vladimir Migunov earned a badge
      One Year In
    • One Month Later
      daelos earned a badge
      One Month Later
    • Week One Done
      daelos earned a badge
      Week One Done
    • Mentor
      Karlston went up a rank
      Mentor
    • One Month Later
      EdwardFranciscoVilla earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      493
    2. 2
      snowy owl
      252
    3. 3
      +FloatingFatMan
      250
    4. 4
      ATLien_0
      220
    5. 5
      +Edouard
      169
  • Tell a friend

    Love Neowin? Tell a friend!