【问题标题】:How to store years of type Calendar into an array?如何将日历类型的年份存储到数组中?
【发布时间】:2017-03-13 13:54:24
【问题描述】:

我正在尝试创建一个数组并用 currentYear+1 填充它,最多 15 个日历 [] 年 = {2016, 2017, 2018, 2019,.......2031} 我想显示它在一个数字选择器中。到目前为止,我能够获得 currentYear 并为其添加 1 年,但是当我尝试将结果存储到 for 循环中的数组中时遇到了问题。

到目前为止我的代码

Calendar cal;
Calendar [] years = new Calendar[15];
public Calendar [] getYears(){


    cal = Calendar.getInstance();
    cal.get(Calendar.YEAR);
    //cal.add(Calendar.YEAR, 1);
    for(int i = 1; i < years.length; i ++){

        Calendar temp = cal.add(Calendar.YEAR, 1);
        years [i] = temp ;

    }


    return years;
}

【问题讨论】:

  • 你遇到了什么问题?
  • 当我尝试用 temp 填充数组时,我收到错误“不兼容的类型需要 java.util.Calendar 发现 void”
  • 我得到一个错误“不兼容的类型需要 java.util.Calendar 发现 void” ...It is obvious ... 是否添加返回日历? ...如果你只需要几年,为什么你有 Calendar 数组?

标签: java android arrays for-loop calendar


【解决方案1】:

首先,如果数组包含15 年,那么它将是从20162030,而不是31

其次,如果您只是将 cal 字段添加到 array years 的所有位置,那么您将有 15 个引用指向完全相同的 Object。您要做的是创建克隆对象并指向它们,您可以使用 clone() 方法来完成。

所以尝试将方法更改为:

public Calendar[] getYears() {
    cal = Calendar.getInstance();
    for (int index = 0; index < years.length;) {
        years[index++] = (Calendar) cal.clone();
        cal.add(Calendar.YEAR, 1);
    }
    return years;
}

但是,如果您只想存储年份,我建议您将代码更改为:

Calendar cal;
int[] years = new int[15];

public int[] getYears() {
    cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    for (int index = 0; index < years.length;) {
        years[index++] = year + index;
    }
    return years;
}

【讨论】:

  • 感谢您的帮助。我将如何打印或记录数组的结果?
  • @khalidalqahtani 创建一个返回数组的字符串版本的方法。即:public String toString(){ StringBuilder string = new StringBuilder();for(int year: years){string.append(year + ", ");}return string.toString();}.
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 2012-02-26
  • 2019-12-03
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
相关资源
最近更新 更多