理性加倍和GCF

时间:2014-04-01 02:41:41

标签: java numbers type-conversion rational-numbers

这个问题是针对最后一种方法。每当我在方法“public static Rational convert(double d)”中返回d时,它表示它无法从double转换为Rational。我如何才能使它能够从方法返回Rational数而不将“Rational”切换为double或参数?我是如何在不创建另一种方法的情况下实现循环来在方法中找到GCF的呢?

public class Rational
{
// The state of a rational number is just the numerator and denominator.
private static int numerator;
private static int denominator;


// When created, a Rational's numerator and denominator are set.
public Rational( int num, int den )
{
    numerator = num;
    denominator = den;
}

// Accessor method for the numerator
public int getNumerator( )
{
    return numerator;
}

// Accessor method for the denominator
public int getDenominator( )
{
    return denominator;
}

// A mutator method which doubles the given rational number by doubling the
// numerator.
public void doubleNumber( )
{
    numerator *= 2;
}

// A method which returns the common denominator between the current and
// given rational.  Specifically, returns the denominator multiplied by the
// denominator of the given rational number.
public int findCommonDenominator( Rational r )
{
    return denominator * r.getDenominator( );
}

//Method returning the decimal value of the fraction.
public static double convert(Rational r)
{
    return (double) numerator / (double) denominator; 
}

//Method returning the smallest fraction possible from a decimal given. 
public static Rational convert(double d)
{
  d = (Math.floor(d * 100)/100);

  while ( denominator != 0)
  {
      d = (double) (numerator % denominator);
      numerator = denominator;
      d = (double) (denominator);
  }

  return d;  
}

1 个答案:

答案 0 :(得分:1)

你的while循环可能永远不会结束。你永远不会改变分母的价值。

现在,对于方法public static Rational convert(double d)

你正在返回一个双,Java如何知道你想成为一个Rational?

没有。

在那种方法中你应该更接近:

Rational converted = new Rational(numerator, denominator);
return converted;

但在你这样做之前,你必须在方法中进行初始化。

你需要做很多工作。

  1. 您将double d传递给该方法,然后不要使用该值,只需覆盖它。
  2. while(denominator != 0)中有一个无限循环,因为你永远不会改变分母值。
  3. 我假设这个方法将被称为Rational rational = Rational.convert(someDouble);所以你应该考虑在方法中声明一个分子和分母,并返回像new Rational(num,dem);
  4. 这样的东西