2015-03-02 54 views
0

我在输入很多日期元素时遇到了麻烦,所有其他元素都成为我输入的最后日期。在GregorianCalendar ArrayList中添加日期元素Java

超类:

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy"); 
String year = "1995", month = "12", day = "24"; 
GregorianCalendar startDate = new GregorianCalendar(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day)); 

public void addDate(int month, int day, int year){ 
    date.add(startDate); 
    startDate.set(GregorianCalendar.DAY_OF_MONTH, day); 
    startDate.set(GregorianCalendar.YEAR, year); 
    startDate.set(GregorianCalendar.MONTH, month); 
} 
public String printCal(int i){ 
    return sdf.format(date.get(i).getTime()); 
} 
public void addName(String newName){ 
    name.add(newName); 
} 

子类:

for(i=0; i<emp.emNum(); i++){ 
       System.out.println("Name: "+ emp.printName(i) + " Date Joined: " + emp.printCal(i)); 
      } 

输出

例如,2个元件输入):

Name: John, Date Joined: December 25, 2000 

Name: Peter, Date Joined: December 25, 2000 
+0

如果我不犯了一个错误,你必须把“新的GregorianCalendar”你ADDDATE方法 – vincent 2015-03-02 14:33:51

+0

啊,它的工作,谢谢! xD – Radulf 2015-03-02 14:36:42

+0

欢迎使用堆栈溢出!这来找我审查(所有的第一篇文章去审查)。我编辑了顶部的位(“所有你的答案谢谢”)。不是因为我忘恩负义或者不友善(我希望),而是因为在这里,最好的表达方式就是给出对你有效的答案并接受你使用的答案。在这里通常不鼓励在问题/帖子中表示感谢 - 尽管它经常是讨论的主题(参见[here](http://meta.stackexchange.com/questions/109956/is-it-important-to-say-thanks) - 正确答案)例如) – 2015-03-02 14:51:15

回答

0

您正在重新使用对象startDate,这是您的问题。您需要为每条新记录创建一个新的GregorianCalendar实例。

public void addDate(int month, int day, int year) 
{ 
    GregorianCalendar myDate = new GregorianCalendar(); 
    myDate.set(GregorianCalendar.DAY_OF_MONTH, day); 
    startDate.set(GregorianCalendar.YEAR, year); 
    startDate.set(GregorianCalendar.MONTH, month); 
    date.add(startDate); 
} 
+0

它现在工作,谢谢! – Radulf 2015-03-02 14:38:53

1

您每次需要添加它时,都需要创建一个GregorianCalendar的实例。 在Java中,当你添加一些东西到一个列表中时,你基本上只添加一个对象的引用。如果您在使用GET(我)修改它,您将修改对象

public void addDate(int month, int day, int year){ 
    date.add(new GregorianCalendar(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day)); 
} 
+0

感谢您的支持,它现在正在运作! – Radulf 2015-03-02 14:39:07