【发布时间】:2019-01-16 20:11:34
【问题描述】:
对于我的 compsci 项目,我正在创建一个 gui 日历,它应该为一年中的每个日期存储不同的信息。这是我实现这种层次关系的代码。 yy 和 mm 是公共静态 ArrayList。
//Populating yy arraylist
for (int i = 0; i<52; i++)
{
Year y = new Year();
y.setYear(1968+i);
for (int n = 0; n<12;n++)
{
Month m = new Month();
DateCal[] dd = new DateCal[31];
m.setMonth(n+1);
for(int c = 0; c<31;c++)
{
dd[c] = new DateCal();
dd[c].setDd(c+1);
dd[c].setMm(n+1);
dd[c].setYy(1968+i);
}
m.setDate(dd);
mm.add(m);
}
y.setMonth(mm);
yy.add(y);
}
填充数组列表后,我需要能够通过逐层访问来获取所选日期的年份:
yy.get(50).getMonth().get(3).getDate()[5].getYy()
问题是当我将月份 m 添加到 mm 时,dd 包含正确的年份值。但是,在 mm.add(m) 行之后,任何日期的每年值都设置为 1968。因此,如果我在 for 循环中执行 mm.get(2).date[3].getYy(),那么它将获得正确的年份值,但不是在我添加 y 之后到 yy 并在某个日期执行 getYy() ;日期只是失去了指定的年份值。
我尝试过使用构造函数来区分月份和年份,将 y 和 m 设为公共静态,尽我所能。我已经坚持了好几天了。我只是不明白为什么这不能正确存储值。问题出在我的代码的这一部分,并且仅在此处; Month 或 Year 或 DateCal 类中没有错误。我保证。如果有人可以看一下,我将不胜感激!生无可恋! :))
【问题讨论】:
-
使用
Java的LocalDate。它可以为您存储所有这些信息。List<LocalDate> dateCal = new ArrayList();. -
@Sedrick,也许这不是学校项目的重点
-
@JoakimDanielson 你可能是对的。
标签: java for-loop arraylist hierarchy