Java对象应用_分数的加减乘除

话不多说,直接上代码:

main.java

public class main {
    public static void main(String[] args) {
        //四则运算测试
        Rational r1 = new Rational();
        r1.setNumerator(1);
        r1.setDenominator(5);
        Rational r2 = new Rational();
        r2.setNumerator(-3);
        r2.setDenominator(2);

        //加法
        Rational result_1 = r1.add(r2);
        int a_1 = result_1.getNumerator();
        int b_1 = result_1.getDenominator();
        if(a_1 * b_1 < 0)
            System.out.println("1/5 + (-3/2) = -" + Math.abs(a_1) + "/" + Math.abs(b_1));
        else
            System.out.println("1/5 + (-3/2) = " + Math.abs(a_1) + "/" + Math.abs(b_1));

        //减法
        Rational result_2 = r1.sub(r2);
        int a_2 = result_2.getNumerator();
        int b_2 = result_2.getDenominator();
        if(a_2 * b_2 < 0)
            System.out.println("1/5 - (-3/2) = -" + Math.abs(a_2) + "/" + Math.abs(b_2));
        else
            System.out.println("1/5 - (-3/2) = " + Math.abs(a_2) + "/" + Math.abs(b_2));

        //乘法
        Rational result_3 = r1.muti(r2);
        int a_3 = result_3.getNumerator();
        int b_3 = result_3.getDenominator();
        if(a_3 * b_3 < 0)
            System.out.println("1/5 * (-3/2) = -" + Math.abs(a_3) + "/" + Math.abs(b_3));
        else
            System.out.println("1/5 * (-3/2) = " + Math.abs(a_3) + "/" + Math.abs(b_3));

        //除法
        Rational result_4 = r1.div(r2);
        int a_4 = result_4.getNumerator();
        int b_4 = result_4.getDenominator();
        if(a_4 * b_4 < 0)
            System.out.println("1/5 / (-3/2) = -" + Math.abs(a_4) + "/" + Math.abs(b_4));
        else
            System.out.println("1/5 / (-3/2) = " + Math.abs(a_4) + "/" + Math.abs(b_4));

    }
}

Rational.java

public class Rational {
    int numerator = 1;      //分子
    int denominator = 1;    //分母

    void setNumerator(int a){
        //设置分子
        int c = f(Math.abs(a), denominator);
        numerator = a / c;
        denominator /= c;
        if(numerator<=0 && denominator<=0){
            numerator = -numerator;
            denominator = -denominator;
        }
    }
    void setDenominator(int b){
        //设置分母
        int c = f(numerator, Math.abs(b));
        numerator /= c;
        denominator = b / c;
        if(numerator<=0 && denominator<=0){
            numerator = -numerator;
            denominator = -denominator;
        }
    }

    int getNumerator(){
        //获取分子
        return numerator;
    }
    int getDenominator(){
        //获取分母
        return denominator;
    }

    int f(int a, int b){
        //辗转相除求最大公约数
        if(a == 0) return 1;
        if(a < b){      //a, b交换
            a = a^b;
            b = a^b;
            a = a^b;
        }
        int r = a % b;
        while(r != 0){
            a = b;
            b = r;
            r = a % b;
        }
        return b;
    }

    Rational add(Rational r){
        //加法运算
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumberator = numerator*b + denominator*a;    //计算新分子
        int newDenominator = denominator*b;     //计算新分母
        Rational result = new Rational();
        result.setNumerator(newNumberator);
        result.setDenominator(newDenominator);
        return result;
    }

    Rational sub(Rational r){
        //减法运算
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumberator = numerator*b - denominator*a;    //计算新分子
        int newDenominator = denominator*b;     //计算新分母
        Rational result = new Rational();
        result.setNumerator(newNumberator);
        result.setDenominator(newDenominator);
        return result;
    }

    Rational muti(Rational r){
        //乘法运算
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumberator = numerator*a;    //计算新分子
        int newDenominator = denominator*b;     //计算新分母
        Rational result = new Rational();
        result.setNumerator(newNumberator);
        result.setDenominator(newDenominator);
        return result;
    }

    Rational div(Rational r){
        //除法运算
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumberator = numerator*b;    //计算新分子
        int newDenominator = denominator*a;     //计算新分母
        Rational result = new Rational();
        result.setNumerator(newNumberator);
        result.setDenominator(newDenominator);
        return result;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值