1

Vechicle Objectの日付が、現在の日付に設定されていないという問題があります。不思議なことに、私のテスト情報はまだこのように出てきます。他のすべての機能は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
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;

これにより、出力の日付形式を管理できます。

アップデート

また、呼び出し元オブジェクトの状態を設定していません。セッターメソッドセットで

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

これにより、販売日がオブジェクトとともに保存され、必要なときに使用できるようになります。

于 2012-10-22T18:09:20.867 に答える
0

setメソッドはVehicleクラスにフィールドを設定しないため、他のメソッドは設定した日付を検出しません。これに変更します:

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

Java-beanセッターには通常、値パラメーターがあり、通常は値を返さないため、これはより慣用的なものになります。

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 に答える