之前的程序写到可以输出分数的算式,接下来就是要怎么计算这个分式算式。我查阅了资料,目前完成到这个状况,对给定的两个分数计算结果。
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 fenshucount f1 = new fenshucount(3,4);
2 fenshucount f2 = new fenshucount(4,5);
3 System.out.println(f1.plus(f2));
结果
时间: 2024-09-29 22:41:56