java问题。。刚刚学做不来还望高手帮忙。。。。

来源:百度知道 编辑:UC知道 时间:2024/07/02 16:32:14
补充以下代码,完成对一个分数类Fraction的定义,并测试这个类
public class Fraction{
private int nume; //分子
private int deno; //分母

//无参构造方法
public Fraction( ){
//初始化实例变量
}

//有参构造方法
public Fraction( int n, int d ){
//初始化实例变量
}

//化简分数方法
void FracSimp( )
{
//求分数的分子和分母的最大公约数
//化简分数
}
/*欧几里德算法 定理:gcd(a,b) = gcd(b,a mod b)
void swap(int & a, int & b)
{
int c = a;
a = b;
b = c;
}
int gcd(int a,int b)
{
if(0 == a )
{
return b;
}
if( 0 == b)
{
return a;
}
if(a > b)
{
swap(a,b);
}
int c;
for(c = a % b ; c > 0 ; c = a % b)
{
a = b;
b = c;
}
return b;

代码如下:调试通过.
public class Fraction
{
private int nume; // 分子
private int deno; // 分母

// 无参构造方法
public Fraction()
{
this.nume = 0;
this.deno = 1;
}

// 有参构造方法
public Fraction(int n, int d) throws Exception
{
if (d==0)
{
throw new Exception("0 is not an available deno.");
}
this.nume = n;
this.deno = d;
}

// 化简分数方法
public void FracSimp()
{
int min = Math.min(nume, deno);
if (nume%2==0 && deno%2==0)
{
for (int i=min;i>=2;i-=2)
{
if (nume%i==0 && deno%i==0)
{
nume = nume/i;
deno = deno/i;
break;
}
}
}else
{
if (min%2==0)
{
min--;
}
for (int i=min;i>=2;i-=2)
{
if (nume%i==0 && deno%i==0)
{
nume = nume/i;
deno = deno