设计思路
1.真分数加法/减法:和/差的分母=两个操作数的分母之积,和/差的分子=第一个操作数的分子乘以第二个操作数的分母+/-第二个操作数的分子乘以第一个操作数的分母。
2.真分数乘法:积的分母=两个操作数之积,积的分子=两个操作数之积。
3.真分数除法:先取除数的倒数,转换成真分数乘法。
4.真分数约分:分子、分母同时除以最大公约数。
代码及注释
加法:
{
int commonDenominator = denominator * op2.getDenominator();//和的分母等于分母之积
int numerator1 = numerator * op2.getDenominator();//第一个数的分子乘以第二个数的分母
int numerator2 = op2.getNumerator() * denominator;//第二个数的分子乘以第一个数的分母
int sum = numerator1 + numerator2;//sum和的分子
System.out.print("(" + this.toString() + ")" + " + " + "(" + op2.toString() + ")" + "=");
return new fenshu(sum, commonDenominator);//sum分子,commonDenominator分母
}```
减法:
```public fenshu subtract(fenshu op2)//减法,例如2/3-1/2=(2*2-1*3)/(2*3)
{
int commonDenominator = denominator * op2.getDenominator();//差的分母
int numerator1 = numerator * op2.getDenominator();
int numerator2 = op2.getNumerator() * denominator;
int difference = numerator1 - numerator2;//difference差的分子
System.out.print("(" + this.toString() + ")" + " - " + "(" + op2.toString() + ")" + "=");
return new fenshu(difference, commonDenominator);//difference分子,commonDenominator分母
}```
乘法:
```public fenshu multiply(fenshu op2)//乘法,例如(2/3)*(1/2)=(2*1)/(3*2)
{
int denom = denominator * op2.getDenominator();//积的分母
int numer = numerator * op2.getNumerator();//积的分子
System.out.print("(" + this.toString() + ")" + " * " + "(" + op2.toString() + ")" + "=");
return new fenshu(numer, denom);//numer分子,denom分母
}```
除法:
```public fenshu divide(fenshu op2)//除法,例如(2/3)/(1/2)=(2*2)/(3*1)
{
fenshu op1 = op2.reciprocal();//除数取倒数,转变为乘法
int numer = numerator * op1.getNumerator();
int denom = denominator * op1.getDenominator();
System.out.print("(" + this.toString() + ")" + " / " + "(" + op2.toString() + ")" + "=");
return new fenshu(numer, denom);
}```
约分:
```private void reduce() {
if (numerator != 0) {
int common = gcd(Math.abs(numerator), denominator);//求分子分母的最大公约数
numerator = numerator / common;
denominator = denominator / common;//约分
}
}```
运行过程截图
==========
![](https://images2018.cnblogs.com/blog/1284381/201804/1284381-20180423212622614-785010597.jpg)
UML图:
==========
![](https://images2018.cnblogs.com/blog/1284381/201804/1284381-20180423212649925-587309424.jpg)
实验体会
==========
实验为自己一人完成,受到了很多同学的帮助,学到了很多新的知识,使得对于四则运算的了解掌握加深一步。