第十週(11.18-11.24)----分數計算----(2)對兩個分數進行加減乘除

YangXiaomoo發表於2016-11-23

  之前的程式寫到可以輸出分數的算式,接下來就是要怎麼計算這個分式算式。我查閱了資料,目前完成到這個狀況,對給定的兩個分數計算結果。

  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));

  結果

 

相關文章