2015-03-02 3 views
0

У меня возникают проблемы при вводе многих элементов даты, все остальные элементы становятся последней введенной мной датой.Добавление элемента date в GregorianCalendar ArrayList Java

SuperClass:

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

+0

Ааа он работал, спасибо! xD – Radulf

+0

Добро пожаловать в переполнение стека! Это пришло ко мне для обзора (все первые сообщения переходят к обзору). Я отредактировал бит наверху («Все ваши ответы сработали благодаря» ...). Не потому, что я неблагодарный или недружелюбный (надеюсь), но потому, что лучший способ выразить благодарность - это дать ответы на ответы, которые сработали для вас, и принять тот, который вы использовали. Выражение благодарности в вопросах/сообщениях обычно не приветствуется здесь, хотя его часто обсуждают (см. [Здесь] (http://meta.stackexchange.com/questions/109956/is-it-important-to-say-thanks -after-get-correct-answer) –

ответ

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

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

Смежные вопросы