翁恺 java进阶第一周作业

设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。
这个类的构造函数是:

Fraction(int a, int b)
构造一个a/b的分数。

这个类要提供以下的功能:

double toDouble();
将分数转换为double
Fraction plus(Fraction r);
将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。
Fraction multiply(Fraction r);
将自己的分数和r的分数相乘,产生一个新的Fraction的对象。
void print();
将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。

注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。

你写的类要和以下的代码放在一起,并请勿修改这个代码:

public class Mian {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Fraction a=new Fraction(2,4);
        Fraction b=new Fraction(1,3);
        a.print();
        b.print();
        a.plus(b).print();
        a.multiply(b).plus(new Fraction(5,6)).print();
        a.print();
        b.print();
    }

}
class Fraction {
    int upNumber;
    int downNumber;
    
    Fraction(int upNumber,int downNumber)
    {
        this.upNumber=upNumber;
        this.downNumber=downNumber;
    }
    
    public double toDouble() 
    {
        return upNumber*1.0/downNumber;
    }
    public Fraction plus(Fraction r) 
    {
        Fraction n=new Fraction(0,0);
        n.upNumber=this.upNumber*r.downNumber+r.upNumber*this.downNumber;
        n.downNumber=this.downNumber*r.downNumber;
        return n;
    }
    public Fraction multiply(Fraction r)
    {
        Fraction n=new Fraction(0,0);
        n.upNumber=this.upNumber*r.upNumber;
        n.downNumber=this.downNumber*r.downNumber;
        return n;
    }
    void print()
    {
        int a=0,b=0,c=0;
        if(upNumber<downNumber) {
            a=downNumber;
            b=upNumber;
        }
        else {
            a=upNumber;
            b=downNumber;
        }
        while(b!=0)
        {
            c=a-b;
            a=b>c?b:c;
            b=b>c?c:b;
        }
        upNumber/=a;
        downNumber/=a;
        if(upNumber==downNumber)
            System.out.println(upNumber/downNumber);
        else
            System.out.println(upNumber+"/"+downNumber);
    }
}

猜你喜欢

转载自www.cnblogs.com/oldfish123/p/13387124.html