2012-05-03 55 views
0

我正在做一些基本的Java編程,我必須創建具有鏈接到其他類構造函數的構造函數的類。例如,參考我下面的代碼...在構造函數中更改數據java

public class Friend { 

    private String name; 
    private Date dateOfBirth; 
    private String phoneNum; 

    public Friend(String name){ 
     this.name=name; 
     this.dateOfBirth = null; 
    } 

    public Date setDOB(Date input){ 
     return dateOfBirth; 
    } 
} 

public class Date { 

    final int MINDAYSINMONTH=1; 
    final int MAXDAYSINMONTH=30; 
    final int MINMONTHSINYEAR=1; 
    final int MAXMONTHSINYEAR=12; 
    private int day; 
    private int month; 
    private int year; 

    //constructor 
    public Date(int day, int month, int year){ 
     this.day=day; 
     this.month=month; 
     this.year=year; 
    } 
} 

我想創建一個新的Friend,然後改變dateOfBirth值是Friend類中,像這樣......

Friend trial = new Friend(input); 
trial.setDOB(new Date(2, 15, 1991)); 

但是我的輸出表明我創建了新的Friend,但dateOfBirth未更改爲上面提供的值。有人可以幫助我瞭解我做錯了什麼。

+0

請重新閱讀你的setter代碼。你在這個setter中爲dateOfBirth字段指定了什麼?爲什麼它會返回任何東西? –

回答

0

你的setDOB方法是錯誤的 - 它根本沒有設置任何東西。

嘗試修改此...

public void setDOB(Date input){ 
    this.dateOfBirth = input; 
} 

你或許應該也有一個getter方法,所以你可以把它的設置後,檢查值...

public Date getDOB(){ 
    return dateOfBirth; 
} 
+0

-1,給作業答案是適得其反的。引導他們回答​​。 – hvgotcodes

+1

我對此有所不同 - 我總是發現學習Java的最好方法就是學習其他人的代碼。如果你有其他人能夠正常工作的代碼,你可以研究它,看看它爲什麼起作用,並從中學習。至少我認爲這是最好的。此外,對於一個簡單的二傳手/吸氣器方法,它很難給出任何東西。 – wattostudios

+0

所有三個答覆幫助我,在閱讀前兩個hvgotcodes和sp00m我已經得到答案,閱讀WATTO的答案幫助我知道如果我得到它的權利,我沒有看到任何問題,如果有的人給提示和那些誰通過方法指導,都是好方法,順便說一句,謝謝所有誰回答,現在我終於可以完成我的計劃。 – Liquified

1

因爲你setDOB方法只返回值

public Date setDOB(Date input){ 
    return dateOfBirth; 
} 

它在哪兒設置什麼?您應該重命名該方法getDOB,因爲它正在執行此操作,並編寫一個適當的public void setDOB來設置值。

0

線索:您的二傳手以自己爲獲取者。