循环并写入数组

Looping and writing into an Array

我正在编写一个程序,该程序能够处理不同年份的降水量数据,以打印出平均年降雨量、月平均值等。我的 class 中有一个 int[] getYears() 方法,它应该提取所有可用年份和 return 这些作为整数数组。

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

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. 年份存储在 rainfallYears 数组中的 rainfallYearObject 中。

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

困扰我的是这一行

getYears[i] = rainfallYearObject.getYear();

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

UML 图:

此处有几个需要改进的地方,假设您发布的是整个 class:

1.) 首次声明字段(rainfallYears 和 getYears)时,无需将空值分配给它们。首次声明它们时,您无需为它们分配任何内容。

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

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

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

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

6.) 鉴于你的两个字段都是私有的,你可能希望有 public getter 方法来使值在 class 之外可访问(如果你完好无损地希望它们可以访问)。

希望这对您有所帮助:)