第十周(11.18-11.24)----分数计算----(2)对两个分数进行加减乘除

  之前的程序写到可以输出分数的算式,接下来就是要怎么计算这个分式算式。我查阅了资料,目前完成到这个状况,对给定的两个分数计算结果。

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

  结果

 

posted @ 2016-11-23 22:01  YangXiaomoo  阅读(663)  评论(2编辑  收藏  举报