2012-10-22 36 views
1

我有一个问题,其中我的Vechicle对象没有其日期目前设置为今天的任何。奇怪的是我的测试信息仍然像这样出来。所有其他功能在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; 
} 
+0

贵'Vehicle'类包含一个叫做'soldDate'或类似的东西领域? –

+0

题外话,但“车辆”拼写像这样。 Eclipse内置了一个拼写检查器,可能会选择类似的东西。 –

+0

是'私人日历DateSold' – Melky

回答

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

你必须设置/分配在你的类值。

+0

这工作正常需要返回CAL和排序,谢谢。 – Melky

0

尝试

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

这可以让你管理输出的日期格式aswel

更新

也,你是不是设置调用对象的状态。在你的setter方法 设置

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

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

0

您的设置方法不会在Vehicle类中设置任何字段,因此其他方法不会找到您刚刚设置的日期。它改成这样:

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

的Java bean的制定者通常有一个值参数,通常不会返回值,因此这将是更地道:

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

为了避免混淆其他Java程序员,用于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; 
}