1

我有一个问题,我的车辆对象当前没有将其日期设置为今天的任何日期。奇怪的是我的测试信息还是这样出来的。所有其他功能都适用于 Calender。

Date Sold: Thu Jan 01 00:00:00 GMT 1970

主班

public void buyVechicle(String Vin){
    Vechicle V = findVechicle(Vin);
    if (V.getHasBeenSold() == true){
        System.out.print("This car has already been sold");
    }
    else{
        V.setHasBeenSold();
        V.setDateSold();
    }
}

车辆类

public Calendar setDateSold(){
    Calendar cal = Calendar.getInstance();
    return cal;
}
4

3 回答 3

0

您的 set 方法不会在 Vehicle 类中设置任何字段,因此其他方法不会找到您刚刚设置的日期。将其更改为:

public Calendar setDateSold(){
    Calendar cal = Calendar.getInstance();
    this.dateSold = cal;
    return cal;
}

Java-bean setter 通常有一个 value 参数并且通常不返回值,所以这会更惯用:

public void setDateSold(Calendar calendar){
    this.dateSold = calendar;
}

为避免让习惯于 Java bean 样式设置器的其他 Java 程序员感到困惑,您可以重命名您的方法:

public Calendar sold(){
    this.dateSold = Calendar.getInstance();
    return this.dateSold;
}

呼叫者向车辆发送一条消息,有效地表明“您已被出售”。

或者,更好的是,有几种方法可以将行为分开:

private Calendar today() {
    return Calendar.getInstance();
}

public void sold(){
    setDateSold(today());
}

public Calendar getDateSold() {
    return this.dateSold;
}

private void setDateSold(Calendar calendar) {
    this.dateSold = calendar;
}
于 2012-10-22T18:11:56.100 回答
0
public void setDateSold(){
    Calendar cal = Calendar.getInstance();
    this.dateSold = cal;
}

您必须在班级中设置/分配值。

于 2012-10-22T18:08:50.243 回答
0

尝试

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
Calendar cal = Calendar.getInstance(); 
this.soldDate= dateFormat.format(cal.getTime());
 return cal;

这使您可以管理输出日期格式

更新

此外,您没有设置调用对象的状态。在你的 setter 方法集中

   this.soldDate= dateFormat.format(cal.getTime());

这将使用对象保存销售日期,您可以在需要时使用它。

于 2012-10-22T18:09:20.867 回答