3.1-互評-OO設計-有理數類的設計
阿新 • • 發佈:2020-10-04
3.1-互評-OO設計-有理數類的設計
仿照BigDecimal類以面向物件的方式設計有理數類
一、給出你的有理數類的程式碼
package oo3_1; public class Rational { private int num; //分子 private int den; //分母 public int GetNumerator() { return num; } public int GetDenominator() { return den; } private static int gcd(int x,int y) { if(x%y==0) return y; else return gcd(y, x%y); } public Rational (int num,int den) { int gcd=gcd(num, den); this.num=((den>0)?1:-1)*num/gcd; this.den=Math.abs(den)/gcd; } public Rational() { num=0; den=1; } public Rational add(Rational newRational) { int x=this.num*newRational.GetDenominator()+this.den*newRational.GetNumerator(); int y=this.den*newRational.GetDenominator(); return new Rational(x,y); } public Rational subtract(Rational newRational) { int x=this.num*newRational.GetDenominator()-this.den*newRational.GetNumerator(); int y=this.den*newRational.GetDenominator(); return new Rational(x,y); } public Rational multiply(Rational newRational) { int x=this.num*newRational.GetNumerator(); int y=this.den*newRational.GetDenominator(); return new Rational(x,y); } public Rational divide(Rational newRational) { int x=this.num*newRational.GetDenominator(); int y=this.den*newRational.GetNumerator(); return new Rational(x,y); } public String toString() { if (this.den==1) { return this.num+""; }else{ return this.num+"/"+this.den; } } public void compare(Rational newRational) { if (this.subtract(newRational).GetNumerator()<0) System.out.println("x<y"); else if(this.subtract(newRational).GetNumerator()==0) System.out.println("x=y"); else System.out.println("x>y"); } public double doubleValue() { return this.num*1.0/this.den; } public int intValue() { return (int)doubleValue(); } public long longValue() { return (long)doubleValue(); } public float floatValue() { return (float)doubleValue(); } }
二、給出你的測試程式碼,要在與有理數類不同包的其他類中呼叫有理數類
package oo3_1; import oo3_1.Rational; public class text { public static void main(String[] args){ Rational x=new Rational(2,3); Rational y=new Rational(6,7); System.out.println("x="+x.toString()); System.out.println("y="+y.toString()); System.out.println("x+y="+x.add(y)); System.out.println("x-y="+x.subtract(y)); System.out.println("x*y="+x.multiply(y)); System.out.println("x/y="+x.divide(y)); x.compare(y); System.out.println(x.intValue()); System.out.println(x.longValue()); System.out.println(x.floatValue()); System.out.println(x.doubleValue()); } }