|
publicclassArithmetic{ privateinta; privateintb; privateintc; privateintd; //两个有理数分别是a/b和c/d; publicArithmetic(inta,intb,intc,intd){ super(); if(b==0||d==0) thrownewRuntimeException("分母不能为零"); this.a=a; this.b=b; this.c=c; this.d=d; } publicStringadd(){ intremainder=greatestCommonDivisor(Math.abs(a*d+c*b),Math.abs(b*d)); returnshowAsFraction((a*d+c*b)/remainder,b*d/remainder); } publicStringsub(){ intremainder=greatestCommonDivisor(Math.abs(a*d-c*b),Math.abs(b*d)); returnshowAsFraction((a*d-c*b)/remainder,b*d/remainder); } publicStringmultiply(){ intremainder=greatestCommonDivisor(Math.abs(a*c),Math.abs(b*d)); returnshowAsFraction(a*c/remainder,b*d/remainder); } publicStringdivide(){ intremainder=greatestCommonDivisor(Math.abs(a*d),Math.abs(b*c)); returnshowAsFraction(a*d/remainder,b*c/remainder); } //求最大公约数 publicintgreatestCommonDivisor(intnumerator,intdenominator){ intbigger; intsmaller; if(numerator>denominator){ bigger=numerator; smaller=denominator; }else{ bigger=denominator; smaller=numerator; } intremainder=bigger%smaller; while(remainder!=0){ bigger=smaller; smaller=remainder; remainder=bigger%smaller; } returnsmaller; } publicStringshowAsFraction(intnumerator,intdenominator){ if((numerator>0&&denominator>0)||(numerator |