【问题标题】:Java Fraction ArrayJava 分数数组
【发布时间】:2018-02-08 16:46:31
【问题描述】:

我是面向对象编程的新手,正在尝试为 Fraction 类创建方法。我创建了方法 getNumerator()、getDenominator() 和 realValue()。现在我想创建一个名为 createFractionArray 的方法,它返回一个 Fraction 对象数组:

1/2, 1/3, ... , 1/(maxDenominator - 1) , 1/(maxDenominator) 

到目前为止,我已经有了这个,但在弄清楚该方法的语句时却是一片空白。任何有关入门的帮助将不胜感激。谢谢!

class Fraction {
  private int numerator, denominator;
  Fraction(int numerator, int denominator) {

    this.numerator = numerator;
    this.denominator = denominator;
  }
    int getNumerator() { return numerator; }
    int getDenominator() { return denomenator; }
    double realValue() { return (1.0 * numerator) / denominator; }
 }

这是我想实现的方法:

public static Fraction[] generateFractionArray (int maxDenominator) {
}

【问题讨论】:

  • 你应该看看for-loops
  • 你有对象,你只需要填充一个数组,例如你将如何填充一个整数数组? int[] int_array = new int[2]; int_array[0] = 1; Fraction 只是另一个对象。
  • 首先你需要创建一个新数组——要创建一个你需要知道它有多大,但是你可以从 maxDenominator 知道这一点。然后你需要把它填满,正如 QBrute 所说,你可以使用 for 循环来迭代从 2 到 maxDenominator 的分母。

标签: java arrays class object


【解决方案1】:

您想创建一个从1/21/maxDenominatorFractions 数组。

首先,您必须弄清楚将有多少个对象。例如,对于maxDenominator = 5,您将获得分数[1/2, 1/3, 1/4, 1/5]。总共有4个分数。现在,根据第一个分母和maxDenominator,你可以找到一个计算长度的公式

长度 = maxDenominator - minDenominator + 1

现在您所要做的就是使用该长度create an array

之后,iterate 将该数组从 minDenominatormaxDenominator 包括在内,并在数组的每个索引处保存一个新的 Fraction 对象。不过要小心索引。

索引从0 开始,但您的循环从minDenominator 开始。因此,要获得正确的索引,您必须在使用该数字访问数组之前减去 minDenominator

【讨论】:

    【解决方案2】:

    这是创建从 1/1 到 1/maxDenominator 的分数的代码。您所要做的就是修改它以满足您的要求。

    public static Fraction[] generateFractionArray (int maxDenominator)
    {
        Fraction[] fractionsToReturn = new Fraction[maxDenominator];
        int numeratorForAllFractions = 1;
        for(int denom = 1; denom <= maxDenominator; denom++)
        {
            fractionsToReturn[denom - 1] = new Fraction(numeratorForAllFractions, denom);
        }
    
        return fractionsToReturn;
    }
    

    注意:当 maxDenominator = 0 或 = 1 或

    祝你好运!

    【讨论】:

    • 在 OP 中,分母从 2 开始 - 即分数 1/2。
    • 因此我说这不能满足他的要求,但给 OP 足够的代码可以使用。
    • @RAZ_Muh_Taz 感谢您的帮助!
    • @RAZ_Muh_Taz for 循环中的语句是做什么的?那是 Fraction 对象的数组吗?
    • @concernedButPowerless 该语句遍历新创建数组的索引并设置它们的值(一个新的 Fraction 对象)。当我们使用新的 Fraction[maxDenominator] 创建数组时,所有索引都包含 NULL。 for 循环创建了所有 Fraction 对象,因此我们可以使用它们。例如,返回的数组将在每个索引处包含您的 Fraction 对象。这意味着我们现在可以像这样使用这个对象集合 -> fractionsToReturn[3] 为我们提供数组中索引 3 处的分数对象(位置 4,因为数组的索引从 0 开始)。有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多