2 Star 0 Fork 0

CS-IMIS-23/fwq20172303_Programming

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
RationalNumber.java 6.14 KB
一键复制 编辑 原始数据 按行查看 历史
20172303 提交于 7年前 . 真分数的运算
package Project.Arithmetic;
public class RationalNumber {
private int numerator, denominator;
//---------------------------------------------------------------------------------------------
// Constructor: Sets up the rational number by ensuring a nonzero denominator 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 = denom * -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. Assume 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/fwq20172303_Programming.git
git@gitee.com:CS-IMIS-23/fwq20172303_Programming.git
CS-IMIS-23
fwq20172303_Programming
fwq20172303_Programming
master

搜索帮助