2014-01-31 4 views
-4

Это мой первый месяц на java. Я получил логическую ошибку, которая обновляет это значение каждый раз, когда я вызываю метод. Как я могу исправить это и сделать статическим, поэтому каждый раз, когда исходные данные и время не изменяются.Как сохранить значение на java

результат:

testing 7 arg constructor with initial date: [2-28-2015],[12:30:30:0] 
Increasing day by 366 [2-29-2016],[12:30:30:0] 
Increasing month by 12 [2-28-2017],[12:30:30:0]<---- should be 2016 
Increasing year by 2 [2-28-2019],[12:30:30:0]<-------should be 2017 
Initial date is [2-28-2016],[12:30:30:0] 
Increasing day by 365 [2-27-2017],[12:30:30:0] 
Increasing month by 11 [1-27-2018],[12:30:30:0] 
Increasing year by 30 [1-27-2048],[12:30:30:0] 

вот мой код:

public class DateTime implements DateConstants {  
private Date date; // from Date Class 
private Time time; // from Time class 
} 
public DateTime addMonths(int mo) 
{ 
this.date.addMonths(mo); 
return this; 
} 
public static void main(String[] myArgs) { 
dateTime1 = new DateTime(2,28,2015,12,30,30,0); 
System.out.println("testing 7 arg constructor with initial date: "+dateTime1); 
System.out.println("Increasing day by 366 "+dateTime1.addDays(366)); 
System.out.println("Increasing month by 12 "+dateTime1.addMonths(12)); 
System.out.println("Increasing year by 2 "+dateTime1.addYears(2)); 
} 
+1

«Статический» - это совершенно неправильное слово для использования здесь. Он уже имеет четко определенный смысл, и это не так. – EJP

+0

Вы имеете в виду, public static final DateTime addMonths (int mo)? – Rishav

ответ

0

Если я правильно понять, вы хотите, чтобы ваши дополнения, чтобы добавить к базовому значению, что объект был создан с. Прямо сейчас у вас есть один объект, который поддерживает свое состояние посредством выполнения, поэтому, когда вы говорите dateTime1.addDays(366), он постоянно модифицирует этот объект.

Вам необходимо либо ввести функциональные возможности для удержания значений, переданных в конструктор, чтобы «перезагрузить», либо повторно создать объект DateTime после каждой модификации.

Как говорили другие, есть смысл для слова static, и это не подходит. Пожалуйста, измените название.

+0

да, вы поймете мою мысль. Позвольте мне посмотреть, что будет тогда решением. Спасибо. – Rishav

0

, если я правильно понимаю ваш вопрос, я думаю, вы можете попробовать это

public class DateTime implements DateConstants {  
private Date date; // from Date Class 
private Time time; // from Time class 

} 
public DateTime addMonths(int mo) 
{ 
    DateTime temp=this.clone(); 
    return temp.date.addMonths(mo); 

} 
public static void main(String[] myArgs) { 
dateTime1 = new DateTime(2,28,2015,12,30,30,0); 
System.out.println("testing 7 arg constructor with initial date: "+dateTime1); 
System.out.println("Increasing day by 366 "+dateTime1.addDays(366)); 
System.out.println("Increasing month by 12 "+dateTime1.addMonths(12)); 
System.out.println("Increasing year by 2 "+dateTime1.addYears(2)); 
} 
+0

все равно дает тот же результат. – Rishav

0

если вы повторно создать объект перед каждым System.out, вы получите результат, который вы хотите.

, кажется, что ваш объект повторного использования

Декларация «dateTime1» отсутствует код, а затем мы предполагаем подмигнули атрибут класса, но вы должны показать в своем вопросе, где она объявлена.

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