2015-03-02 50 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