【问题标题】:Looping and writing into an Array循环并写入数组
【发布时间】:2015-11-19 02:13:45
【问题描述】:

我正在编写一个程序,该程序将能够处理有关不同年份的降水数据,以打印出年平均降雨量、月平均值等。我的课堂上有一个 int[] getYears() 方法,它应该提取所有可用年份并将它们作为整数数组返回。

这是我编译的代码,但我不确定我所做的是否真的正确:

public class Rainfall {

private RainfallYear[] rainfallYears = null;
private int[] getYears = null;

public int[] getYears() {

    for (RainfallYear rainfallYearObject : rainfallYears) {
        for (int i = 0; i < rainfallYears.length; i++) {
            getYears[i] = rainfallYearObject.getYear();
        }
    }

    return getYears;
}

public Rainfall(RainfallYear[] rainfallYears) {
    super();
    this.rainfallYears = rainfallYears;
} 
}

以下是我思考的步骤:

  1. 年份存储在雨量年对象中,该对象位于雨量年数组中。

  2. 根据给定的年数,我想获取每一年并将其放入 getYears 数组。

困扰我的是这条线

getYears[i] = rainfallYearObject.getYear();

我感觉这在逻辑上是错误的,即使我没有得到任何错误。我是在正确的轨道上,还是完全偏离了轨道?

UML 图:

【问题讨论】:

  • 您可能想要编辑您的问题以包含您正在编程的语言的标签。

标签: java arrays loops assign


【解决方案1】:

这里有几个需要改进的地方,假设您发布的是整个班级:

1.) 当您首次声明字段(rainfallYears 和 getYears)时,您不需要将它们分配给它们。当你第一次声明它们时,你不需要为它们分配任何东西。

2.) 更改 getYears 字段或 getYears 方法的名称。具有相同名称的字段和方法可能会让人感到困惑。

3.) 您需要设置数组的大小,或者使用大小可变的东西,例如 ArrayLists 这将有助于解决您所说的困扰您的部分

4.) 在您的 for 循环中,您有一个 for-each 循环(“for each rainYear in rainYears”)和一个 for 循环(按索引计数,在您的情况下为 i)。选择一个或另一个,但你不需要两者。如果您坚持使用数组,请使用 for 循环(索引类型)

5.) 在您的构造函数中,将您的 getYears 字段设置为等于您的 getYears 方法的结果(但同样,重命名其中一个)。

6.) 鉴于您的两个字段都是私有的,您可能希望使用公共 getter 方法来使值可以在类外部访问(如果您确实希望它们可以访问)。

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多