2016-12-04 19 views
0

我是新來的java,並且很難理解我在這裏做錯了什麼。我仍然很難完全理解抽象類和接口,所以我認爲這就是我的問題來自何處。試圖將GregorianDate傳遞給Java中的構造函數

我想創建一個類,將允許我創建黨的對象,我能夠實例化除日期以外的所有變量。以下是我迄今爲止:

public class Main { 

    public static void main(String[] args) { 

     ... 

     Party joes = new Party("Joes party", "Joe", "Joe's Place", 
         new GregorianCalendar(2012,10,10)); 
     joes.printParty(); 
    } 
} 

public class Party { 

    //attributes of party 
    private String partyName; 
    private String partyHost; 
    private String location; 
    private GregorianCalendar partyTime; 

     public Party(String partyName, String partyHost, String location, GregorianCalendar partyTime){ 
     this.partyName = partyName; 
     this.partyHost = partyHost; 
     this.location = location; 
     this.partyTime = partyTime; 
     } 
} 

當我打印出來,我得到:

"Joes party is going to be hosted by Joe at Joe's Place on: 
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true..." 
+0

請參閱http://stackoverflow.com/questions/30434334/gregoriancalendar-outputs-the-date-is-java-util-gregoriancalendimeime-11415564 – Tunaki

+0

對不起,如果我失去了一些東西,但我看到了這個答案,我想這是一個輸出問題。我認爲我的數據傳遞方式存在問題。 – Kronos

+0

你爲什麼這麼想? – Tunaki

回答

1

正在顯示什麼是班上Calendar定義的toString()方法的結果。這幾乎不是某人在將日期轉換爲字符串時要顯示的內容,但這是類如何定義的。

幸運的是,Java平臺庫中有一些工具可讓您按照您想要顯示的形式格式化日期......所以這就是您需要執行的操作。不是將對GregorianCalendar實例的引用傳遞給打印方法,而是使用SimpleDateFormat類創建自己格式化的String實例,然後將對該字符串的引用傳遞給print方法。

+0

所以問題不在於我創建或傳遞變量的方式?它只是以無益的方式打印出來的? – Kronos

+0

您的程序完全按照您定義的行爲方式工作。當你將一個對象引用傳遞給'System.out.println(...)'方法時,print會自動調用該對象的'toString()'方法來確定它應該打印什麼(以及你看到的是'Calendar'中定義的'toString()'方法的結果)。與其將GregorianCalendar引用傳遞給打印方法,不如將自己更有意義的字符串設置爲顯示格式,然後將對該字符串的引用傳遞給打印方法。 – scottb

相關問題