个人项目总结

个人项目的大部分设计都在上一篇博客中描述的比较清楚。

下面描述一下个人项目最终版本和上次描述的不同。

一、分数除零不再作为一个异常,而是融入到控制流中区判断。原因是随机生成的表达式中除0并不是稀有事件,为了更好的用户体验,最终的分数类为:

public class Fraction {
    private int numer;    //    numerator
    private int denom;    //    denominator
    public Fraction(int numer,int denom){
        this.numer=numer;
        this.denom=denom;
    }
    public Fraction(int numer){
        this.numer=numer;
                this.denom=1;
    }    
    public int getNumer(){
        return numer;
    }
    public int getDenom(){
        return denom;
    }
    public void setNumer(int numer){
        this.numer=numer;
    } 
    public void setDenom(int denom){
        this.denom=denom;
    }
    public String toString(){
                simplfy();
                if(denom==1) return numer+"";
                else{
                    if(denom<0){
                        denom*=-1;
                        numer*=-1;
                    }
                   
                return numer+"/"+denom;}
    }
    public int gcd(int a,int b){
        while(a%b!=0){
            int temp=a%b;
            a=b;
            b=temp;
        }
        return b;
    }
    public int lcm(int a,int b){
        return a*b/gcd(a,b);
    }
    public void simplfy(){
        int a=gcd(numer,denom);
        numer/=a;
        denom/=a;
    }
    public Fraction add(Fraction op2){
        int newdenom=lcm(denom,op2.denom);
        int newnumer=numer*newdenom/denom+op2.numer*newdenom/op2.denom;
        Fraction f=new Fraction(newnumer,newdenom);
        f.simplfy();
        return f;
    }
    public Fraction minus(Fraction op2){
        int newdenom=lcm(denom,op2.denom);
        int newnumer=numer*newdenom/denom-op2.numer*newdenom/op2.denom;
        Fraction f=new Fraction(newnumer,newdenom);
        f.simplfy();
        return f;
    }
    public Fraction multi(Fraction op2){
        Fraction f=new Fraction(numer*op2.numer,denom*op2.denom);
        f.simplfy();
        return f;
    }
    public Fraction divide(Fraction op2)
                {
        Fraction f=new Fraction(numer*op2.denom,denom*op2.numer);
        f.simplfy();
        return f;
    }

    
    
    public static void main(String[] args){
        Fraction f=new Fraction(-4,6);
        f.simplfy();
        System.out.println(f);
    }
}
View Code

相关文章: