当前位置: 代码迷 >> J2SE >> java基础:这么设置分子分母是什么意思?直接numerator=a;denominator=b;不就好了
  详细解决方案

java基础:这么设置分子分母是什么意思?直接numerator=a;denominator=b;不就好了

热度:71   发布时间:2016-04-23 19:39:38.0
java基础:这样设置分子分母是什么意思?直接numerator=a;denominator=b;不就好了
书上的例子,这个设置看不懂,谢谢各位辣
package textexample;

public class Rational {
int numerator=1;//分子
int denominator=1;//分母
void setNumerator(int a ){//设置分子
int c=f(Math.abs(a), denominator);//计算最大公约数
numerator=a/c;
denominator=denominator/c;
if(numerator<0&&denominator<0){
numerator=-numerator;
denominator=-denominator;
}
}
void setDenominator(int b){//设置分母
int c=f(numerator,Math.abs(b));//计算最大公约数
numerator=numerator/c;
denominator=b/c;
if(numerator<0&&denominator<0){
numerator=-numerator;
denominator=-denominator;
}
}
int f(int a ,int b){
if(a==0){
return 1;
}if (a<b) {
int c=a;
a=b;
b=c;
}
int r=a%b;
while(r!=0){
a=b;
b=r;
r=a%b;
}
return b;
}
}

------解决思路----------------------
举个例子,你跟着程序走一遍就知道
原来参数为:1和6,即1/6
调用设置,设置分子为4
计算4和6的最大公约数为2
分子为4/2 =2
分母为6/2=3
最终参数2和3,即2/3
这个类表示的是分数的最简形式
但是bug是只有设置是才表示最简,初始化时不检查..
  相关解决方案