簡體   English   中英

在GregorianCalendar ArrayList Java中添加日期元素

[英]Adding a date element in 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

每次您想添加它時,都需要創建一個GregorianCalendar實例。 在Java中,當您向列表中添加內容時,基本上只添加了對對象的引用。 如果使用get(i)修改它,則將修改對象

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

您正在重用對象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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM