rational.java
来自「此源码为机械工业出版社出版的《Java语言程序设计》第三版所配套的书中所有源代码」· Java 代码 · 共 99 行
JAVA
99 行
// 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 + =
减小字号Ctrl + -
显示快捷键?