设计思路

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)


实验体会
==========
实验为自己一人完成,受到了很多同学的帮助,学到了很多新的知识,使得对于四则运算的了解掌握加深一步。
posted on 2018-04-23 21:29  lalaala  阅读(116)  评论(0编辑  收藏  举报