我剛剛開始學習Java,在編寫/試驗一個簡單的程序時遇到了一些問題。Getter返回'0'值;沒有傳遞對象?
這是從類VDC調用getter,getDateDifference()的方法iM。
public static void iM() {
VDC answer = new VDC();
long theAnswer = answer.getDateDifference();
System.out.println(theAnswer);
}
打印出一個零。
這是VDC類。
public class VDC {
public static long dateDifference;
public static void main(String[] args) {
VDC.dateDifference();
System.out.println(dateDifference);
}
public static void dateDifference() throws ParseException{
String pattern = "dd/MM/yyyy/HH/mm";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date startDate = format.parse("22/06/2017/15/00");
System.out.println("Start Date: " + startDate);
Date dNow = new Date();
System.out.println("Current date is: " + dNow);
long diff = dNow.getTime() - startDate.getTime();
dateDifference = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}
public long getDateDifference() {
return dateDifference;
}
public void setDateDifference(long dateDifference) {
VDC.dateDifference = dateDifference;
}
}
我相當肯定,我寫setter和正確吸氣劑,並在Eclipse中運行VDC.java給我dateDifference的正確值。但是,如果我嘗試運行寫入iM方法的類,則dateDifference返回值0.
在Google搜索太久後,我認爲我的問題可能是實例dateDifference未設置爲傳遞的來自類VDC的dateDifference(對不起,如果我混淆了任何人)。
我試圖將我在其他SOF問題中發現的應用程序應用於我的程序,但是我發現我無法這樣做。我如何確保getDateDifference()在另一個類中返回正確的值(而不是0)?
(我很抱歉,如果這是一個壞的問題,我只是我無法申請我找到了解決我的問題)
在你調用'iM()'方法中的getter之前,你在哪裏調用setter?如果你從不設定日期差異,你會如何期望它不是0值? –
只是一個提示 - 有一個字段和一個同名的方法只能導致可怕的混淆。也許'calculateDateDifference'會是這個方法的一個更好的名字。 –
@HovercraftFullOfEels感謝您的幫助。只是爲了澄清,是因爲我正在創建一個dateDifference變量的新實例,而不是實際使用VDC.java中的dateDifference變量,我得到0而不是正確的值? – mattimias