分数的四则运算

来源:互联网 发布:华迈网络摄像机官网 编辑:程序博客网 时间:2024/05/22 06:05
 public class Example {
public static void main(String[] args) {
Rational r1 = new Rational();
Rational r2 = new Rational();
r1.setNumeratorAndDenominator(3, 5);
int r1Fenzi = r1.getNumerator();
int r1Fenmu = r1.getDenominator();
r2.setNumeratorAndDenominator(3, 2);
int r2Fenzi = r2.getNumerator();
int r2Fenmu = r2.getDenominator();
Rational result = r1.add(r2);
int resultFenzi = result.getNumerator();
int resultFenmu = result.getDenominator();
System.out.printf("\n%d/%d+%d/%d = %d/%d",r1Fenzi,r1Fenmu,
r2Fenzi,r2Fenmu,resultFenzi,resultFenmu);
result = r1.sub(r2);
resultFenzi = result.getNumerator();
resultFenmu = result.getDenominator();
System.out.printf("\n%d/%d+%d/%d = %d/%d",r1Fenzi,r1Fenmu+
r2Fenzi+r2Fenmu+resultFenzi+resultFenmu);
result = r1.muti(r2);
resultFenzi = result.getNumerator();
resultFenmu = result.getDenominator();
System.out.printf("\n%d/%d+%d/%d = %d/%d"+r1Fenzi+r1Fenmu,
r2Fenzi,r2Fenmu,resultFenzi,resultFenmu);
result = r1.div(r2);
resultFenzi = result.getNumerator();
resultFenmu = result.getDenominator();
System.out.printf("\n%d/%d+%d/%d = %d/%d",r1Fenzi,r1Fenmu,
r2Fenzi,r2Fenmu,resultFenzi,resultFenmu);
}

}



 public class Rational {
       int numerator;//分子
       int denominator;//分母
       void setNumeratorAndDenominator(int fenzi,int fenmu)
       {
        int m = 1;
        int n = 1;
        if(fenzi<0)
        {
        m = -1*fenmu;
        }
        if(fenmu<0)
        {
        n = -1*fenmu;
        }
        if(fenmu==0)
        {
        numerator = 0;
        denominator = 1;
        return ;
        }
        
        int c = f(m,n);
        
        numerator = fenzi/c;
        denominator = fenmu/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<b)
       {
       int c = a;
       a = b;
       b = c;
       }
       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 newNumerator = numerator*b+denominator*a;
       int newDonminator = denominator*b;
       Rational result = new Rational();
       result.setNumeratorAndDenominator(newNumerator, newDonminator);
       return result; 
       }
       
       Rational sub(Rational r)
       {
       int a = r.getNumerator();
        int b= r.getDenominator();
        int newNumerator = numerator*b-denominator*a;
        int newDonminator = denominator*b;
        Rational result = new Rational();
        result.setNumeratorAndDenominator(newNumerator, newDonminator);
        return result; 
       }
       
       Rational muti(Rational r)
       {
       int a = r.getNumerator();
        int b= r.getDenominator();
        int newNumerator = numerator*a;
        int newDonminator = denominator*b;
        Rational result = new Rational();
        result.setNumeratorAndDenominator(newNumerator, newDonminator);
        return result; 
       }
       
       Rational div(Rational r)
       {
       int a = r.getNumerator();
        int b= r.getDenominator();
        int newNumerator = numerator*b;
        int newDonminator = denominator*a;
        Rational result = new Rational();
        result.setNumeratorAndDenominator(newNumerator, newDonminator);
        return result; 
       }
}

0 0
原创粉丝点击