第十周(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));
结果