1 Star 1 Fork 0

CS-IMIS-23/20172313yukunpeng

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
RationalNumber.java 5.61 KB
Copy Edit Raw Blame History
余坤澎 authored 2018-03-31 13:47 +08:00 . docs:practice
//*************************************************************
// RationalNumber.java Author
//
// Represents one rational number with a number with a numerator and
// denominator
//*************************************************************
public class RationalNumber
{
private int numerator, denominator;
//---------------------------------------------------------------
// Constructor: Sets up the rational number by rnsuring a nonzero
// demonminator and making only the numerator signed
//---------------------------------------------------------------
public RationalNumber(int numer, int denom)
{
if (denom == 0)
denom = 1;
// Make the numerator "store" the sign
if (denom < 0)
{
numer = numer * -1;
denom = numer * -1;
}
numerator = numer;
denominator = denom;
reduce();
}
//--------------------------------------------------------------
// Returns the numerator of this rational number
//--------------------------------------------------------------
public int getNumerator()
{
return numerator;
}
//--------------------------------------------------------------
// Returns the denominator of this rational number
//--------------------------------------------------------------
public int getDenominator()
{
return denominator;
}
//--------------------------------------------------------------
// Returns the reciprocal of this rational number
//--------------------------------------------------------------
public RationalNumber reciprocal()
{
return new RationalNumber(denominator, numerator);
}
//--------------------------------------------------------------
// Adds this rational number to the one passed as a parameter
// A common denominator is found by multiplying the individual
// denominators
//--------------------------------------------------------------
public RationalNumber add(RationalNumber op2)
{
int commonDenominator = denominator * op2.getDenominator();
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int sum = numerator1 + numerator2;
return new RationalNumber(sum, commonDenominator);
}
//--------------------------------------------------------------
// Subtracts the rational number passed as a parameter from this
// rational number
//--------------------------------------------------------------
public RationalNumber subtract(RationalNumber op2)
{
int commonDenominator = denominator * op2.getDenominator();
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int difference = numerator1 - numerator2;
return new RationalNumber(difference, commonDenominator);
}
//--------------------------------------------------------------
// Multiplies this rational number by the one passed as a
// parameter
//-------------------------------------------------------------
public RationalNumber multiply(RationalNumber op2)
{
int numer = numerator * op2.getNumerator();
int denom = denominator * op2.getDenominator();
return new RationalNumber(numer, denom);
}
//---------------------------------------------------------------
// Divides this rational number by the one passed as a parameter
// by multiplying by the reciprocal of the second rational
//---------------------------------------------------------------
public RationalNumber divide(RationalNumber op2)
{
return multiply(op2.reciprocal());
}
//---------------------------------------------------------------
// Determines if this rational number is equal to the one passed
// as a parameter. Assumes they are both reduced
//---------------------------------------------------------------
public boolean isLike(RationalNumber op2)
{
return ( numerator == op2.getNumerator() &&
denominator == op2.getDenominator() );
}
//---------------------------------------------------------------
// Returns this rational number as a string
//---------------------------------------------------------------
public String toString()
{
String result;
if (numerator == 0)
result = "0";
else
if (denominator == 1)
result = numerator + "";
else
result = numerator + "/" + denominator;
return result;
}
//--------------------------------------------------------------
// Reduces this rational number by dividing both the numerator
// and the denominator by their greatest common divisor
//--------------------------------------------------------------
private void reduce()
{
if (numerator != 0)
{
int common = gcd(Math.abs(numerator), denominator);
numerator = numerator / common;
denominator = denominator / common;
}
}
//--------------------------------------------------------------
// Computes and returns the greatest common divisor of the two
// positive parameters. Uses euclid's algorithm
//--------------------------------------------------------------
private int gcd(int num1, int num2)
{
while (num1 != num2)
if (num1 > num2)
num1 = num1 - num2;
else
num2 = num2 - num1;
return num1;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/CS-IMIS-23/20172313yukunpeng.git
git@gitee.com:CS-IMIS-23/20172313yukunpeng.git
CS-IMIS-23
20172313yukunpeng
20172313yukunpeng
master

Search