2016-12-04 66 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

相关问题