⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rational.java

📁 此源码为机械工业出版社出版的《Java语言程序设计》第三版所配套的书中所有源代码。
💻 JAVA
字号:
// Rational.java: Define a rational number and its associated
// operations such as add, subtract, multiply, and divide
public class Rational
{
  // Data fields for numerator and denominator
  private long numerator = 0;
  private long denominator = 1;

  // Default constructor
  public Rational()
  {
    this(0, 1);
  }

  // Construct a rational with specified numerator and denominator
  public Rational(long numerator, long denominator)
  {
    long gcd = gcd(numerator, denominator);
    this.numerator = numerator/gcd;
    this.denominator = denominator/gcd;
  }

  // Find GCD of two numbers
  private long gcd(long n, long d)
  {
    long t1 = Math.abs(n);
    long t2 = Math.abs(d);
    long remainder = t1%t2;

    while (remainder != 0)
    {
      t1 = t2;
      t2 = remainder;
      remainder = t1%t2;
    }

    return t2;
  }

  // Getter method for numerator
  public long getNumerator()
  {
    return numerator;
  }

  public long getDenominator()
  {
    return denominator;
  }

  // Add a rational number to this rational
  public Rational add(Rational secondRational)
  {
    long n = numerator*secondRational.getDenominator() +
      denominator*secondRational.getNumerator();
    long d = denominator*secondRational.getDenominator();
    return new Rational(n, d);
  }

  // Subtract a rational number from this rational
  public Rational subtract(Rational secondRational)
  {
    long n = numerator*secondRational.getDenominator()
      - denominator*secondRational.getNumerator();
    long d = denominator*secondRational.getDenominator();
    return new Rational(n, d);
  }

  // Multiply a rational number to this rational
  public Rational multiply(Rational secondRational)
  {
    long n = numerator*secondRational.getNumerator();
    long d = denominator*secondRational.getDenominator();
    return new Rational(n, d);
  }

  // Divide a rational number from this rational
  public Rational divide(Rational secondRational) 
    throws RuntimeException
  {
    if (secondRational.getNumerator() == 0)
      throw new RuntimeException("Denominator cannot be zero");

    long n = numerator*secondRational.getDenominator();
    long d = denominator*secondRational.getNumerator();
    return new Rational(n, d);
  }

  // Override the toString() method
  public String toString()
  {
    if (denominator == 1)
      return numerator + "";
    else
      return numerator + "/" + denominator;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -