У меня простая задача. Есть два класса: Билет и Дата. Билет содержит событие, место события и дату события, которое является объектом Date. Мне также нужно предоставить метод move() для объекта Date, поэтому я использовал Calendar и add() календаря. Все выглядит нормально, кроме вывода. Я постоянно получаю одну и ту же дату для всех объектов Event.
Код:
Класс Ticket:
public class Ticket {
private String what;
private String where;
private Date when;
public Ticket(String s1, String s2, Data d){
this.what = s1;
this.where = s2;
this.when = d;
}
public Date giveDate(){
System.out.println("when in giveDate() "+this.when);
return this.when;
}
public String toString(){
return "what: "+this.what+"\n"+"where: "+this.where+"\n"+"when: "+this.when;
}
}
Класс даты:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Date {
public int day;
public int month;
public int year;
public Date(int x, int y, int z){
this.day = x;
this.month = y;
this.year = z;
}
public Date move(int p){
Calendar gc = new GregorianCalendar(this.year, this.month, this.day);
gc.add(Calendar.DAY_OF_YEAR, p);
this.year = gc.get(Calendar.YEAR);
this.day = gc.get(Calendar.DAY_OF_MONTH);
this.month = gc.get(Calendar.MONTH);
return this;
}
@Override
public String toString(){
return this.day+","+this.month+","+this.year;
}
}
Основное для тестирования:
Date date1=new Date(30,4,2002);
Ticket event1=new Ticket("Peter Gabriel's gig",
"London",date1
);
System.out.println(event1);
Ticket event2=new Ticket("Diana Kroll's concert",
"Glasgow",date1
);
System.out.println(event2);
Date date2=event2.giveDate();
date2.move(30);
Ticket event3=new Ticket("X's B-day",
"some place",date2
);
System.out.println(event3);
System.out.println(event1);
System.out.println(event2);
System.out.println(event3);
И вот мой результат. После создания событий у них есть правильная дата, но в конце все вы получаете одинаковую дату, не знаю почему:/
what: Peter Gabriel's gig
where: London
when: 30,4,2002
what: Diana Krall's concert
where: Glasgow
when: 6,12,2004
what: X's B-day
where: some place
when: 5,1,2005
what: Peter Gabriel's gig
where: London
when: 5,1,2005
what: Diana Krall's concert
where: Glasgow
when: 5,1,2005
what: X's B-day
where: some place
when: 5,1,2005
Подробнее здесь: https://stackoverflow.com/questions/248 ... a-calendar
Использование Java-календаря ⇐ JAVA
Программисты JAVA общаются здесь
1766726038
Anonymous
У меня простая задача. Есть два класса: Билет и Дата. Билет содержит событие, место события и дату события, которое является объектом Date. Мне также нужно предоставить метод move() для объекта Date, поэтому я использовал Calendar и add() календаря. Все выглядит нормально, кроме вывода. Я постоянно получаю одну и ту же дату для всех объектов Event.
Код:
Класс Ticket:
public class Ticket {
private String what;
private String where;
private Date when;
public Ticket(String s1, String s2, Data d){
this.what = s1;
this.where = s2;
this.when = d;
}
public Date giveDate(){
System.out.println("when in giveDate() "+this.when);
return this.when;
}
public String toString(){
return "what: "+this.what+"\n"+"where: "+this.where+"\n"+"when: "+this.when;
}
}
Класс даты:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Date {
public int day;
public int month;
public int year;
public Date(int x, int y, int z){
this.day = x;
this.month = y;
this.year = z;
}
public Date move(int p){
Calendar gc = new GregorianCalendar(this.year, this.month, this.day);
gc.add(Calendar.DAY_OF_YEAR, p);
this.year = gc.get(Calendar.YEAR);
this.day = gc.get(Calendar.DAY_OF_MONTH);
this.month = gc.get(Calendar.MONTH);
return this;
}
@Override
public String toString(){
return this.day+","+this.month+","+this.year;
}
}
Основное для тестирования:
Date date1=new Date(30,4,2002);
Ticket event1=new Ticket("Peter Gabriel's gig",
"London",date1
);
System.out.println(event1);
Ticket event2=new Ticket("Diana Kroll's concert",
"Glasgow",date1
);
System.out.println(event2);
Date date2=event2.giveDate();
date2.move(30);
Ticket event3=new Ticket("X's B-day",
"some place",date2
);
System.out.println(event3);
System.out.println(event1);
System.out.println(event2);
System.out.println(event3);
И вот мой результат. После создания событий у них есть правильная дата, но в конце все вы получаете одинаковую дату, не знаю почему:/
what: Peter Gabriel's gig
where: London
when: 30,4,2002
what: Diana Krall's concert
where: Glasgow
when: 6,12,2004
what: X's B-day
where: some place
when: 5,1,2005
what: Peter Gabriel's gig
where: London
when: 5,1,2005
what: Diana Krall's concert
where: Glasgow
when: 5,1,2005
what: X's B-day
where: some place
when: 5,1,2005
Подробнее здесь: [url]https://stackoverflow.com/questions/2484616/using-java-calendar[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия