之前的程式寫到可以輸出分數的算式,接下來就是要怎麼計算這個分式算式。我查閱了資料,目前完成到這個狀況,對給定的兩個分數計算結果。
fenshucount裡getDinominator是獲得分母,getNumerator是獲得分子。
獲得最大公約數
1 public static int commonDivisor(int x,int y) //計算2個數的最大公約數。按絕對值計算。 2 { 3 if(x==0||y==0) 4 { 5 return 1; 6 } 7 int x1; 8 int y1; 9 10 x1=(Math.abs(x)>Math.abs(y))?Math.abs(x):Math.abs(y); //使x1>y1. 11 y1=(Math.abs(x)>Math.abs(y))?Math.abs(y):Math.abs(x); 12 int z=1; 13 while(z!=0) 14 { 15 z=x1%y1; 16 x1=y1; 17 y1=z; 18 } 19 return x1; 20 }
實現兩個分數相加
1 public fenshucount plus(fenshucount f2) //加法運算 2 { 3 int newNumerator=c*f2.getDinominator()+d*f2.getNumerator(); 4 int newDinominator=d*f2.getDinominator(); 5 6 int maxCommon=commonDivisor(newNumerator,newDinominator); 7 return new fenshucount(newNumerator/maxCommon,newDinominator/maxCommon); 8 }
實現兩個分數相減
1 public fenshucount minus(fenshucount f2) //減法運算 2 { 3 int newNumerator=c*f2.getDinominator()-d*f2.getNumerator(); 4 int newDinominator=d*f2.getDinominator(); 5 6 int maxCommon=commonDivisor(newNumerator,newDinominator); 7 return new fenshucount(newNumerator/maxCommon,newDinominator/maxCommon); 8 }
實現兩個分數相乘
1 public fenshucount multiply(fenshucount f2) //乘法運算 2 { 3 int newNumerator=c*f2.getNumerator(); 4 int newDinominator=d*f2.getDinominator(); 5 6 int maxCommon=commonDivisor(newNumerator,newDinominator); 7 return new fenshucount(newNumerator/maxCommon,newDinominator/maxCommon); 8 }
實現兩個分數相除
1 public fenshucount divide(fenshucount f2) //除法運算 2 { 3 if(f2.getNumerator()==0) 4 { 5 System.out.println("0不能做除數!"); 6 System.exit(0); 7 } 8 9 int newNumerator=c*f2.getDinominator(); 10 int newDinominator=d*f2.getNumerator(); 11 12 int maxCommon=commonDivisor(newNumerator,newDinominator); 13 return new fenshucount(newNumerator/maxCommon,newDinominator/maxCommon); 14 }
程式碼測試
1 fenshucount f1 = new fenshucount(3,4); 2 fenshucount f2 = new fenshucount(4,5); 3 System.out.println(f1.plus(f2)); 4 System.out.println(f1.minus(f2)); 5 System.out.println(f1.multiply(f2)); 6 System.out.println(f1.divide(f2));
結果