2016-12-04 9 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-gregoriancalendartime-11415564 – Tunaki

+0

申し訳ありませんが、私は何かが欠けていますが、私はこの答えを見て、私は思っている場合それは出力の問題だったデータの受け渡し方法に問題があると思いました。 – Kronos

+0

あなたはそれをどう思いますか? – Tunaki

答えて

1

はクラスCalendarで定義されたtoString()方法の結果です。これは、日付を文字列に変換するときに表示することはほとんどありませんが、これはCalendarクラスが定義された方法です。

幸運にも、Java Platformライブラリには、表示したい形式で日付の書式を設定できる機能があります。そのため、必要な作業があります。 GregorianCalendarインスタンスへの参照をprintメソッドに渡す代わりに、たとえばSimpleDateFormatクラスを使用して独自の書式付きStringインスタンスを作成し、その文字列への参照をprintメソッドに渡します。

+0

問題は私が変数を作成したり渡したりする方法ではないのですか?それは単なる役に立たない方法で印刷しているだけですか? – Kronos

+0

プログラムは、振る舞いを定義したのとまったく同じ方法で動作します。オブジェクト参照を 'System.out.println(...)'メソッドに渡すと、printはそのオブジェクトの 'toString()'メソッドを自動的に呼び出して、それが何を印刷すべきかを決定します。 'toString()'メソッドの結果は 'Calendar'で定義されています)。 'GregorianCalendar'リファレンスをprintメソッドに渡すのではなく、より意味のある文字列を表示してフォーマットし、その文字列への参照をprintメソッドに渡す必要があります。 – scottb

関連する問題