2011-09-28 28 views
1

分配: Time類:傳遞一個方法調用構造函數,JAVA

給它一個小時,分,秒3名私有數據成員。使用long或int類型。

如果你使用int,你必須在ctors內部施放。

添加一個無參數ctor,使用p38上代碼2.6中的代碼將 的值分配給當前時間的小時,分​​鍾和秒。

添加另一個將採用名爲elapseTime的單個長參數的ctor(更好的 將會是elapsedTime),這是自Unix紀元日期以來的毫秒數。 這個第二個ctor也將使用代碼,如代碼2.6所示,設置數據成員 自該紀元以來經過的時間。

爲每個數據成員添加一個吸氣劑。每個吸氣器只需要一個聲明。

因爲數據成員是私人的,所以需要吸氣劑。

添加一個toString方法,該方法返回Time對象的小時,分​​鍾和秒。

這裏是我的類Time()代碼,我的setTime()代碼表示上面提到的書籍參考。

package chapter_10;

public class Time { 
    private long hour; 
    private long minute; 
    private long second; 

    public Time() { 

    } 
    public void setTime(long elapsedTime){ 
     long millisecond = System.currentTimeMillis(); 
     second = millisecond/1000; 
     minute = second/60; 
     hour = minute /60; 
     //equate for current time. 
     second = second %60; 
     minute = minute %60; 
     hour = hour %24; 
    } 

    public long getHour() { 
     return hour; 
    } 

    public long getMinute() { 
     return minute; 
    } 

    public long getSecond() { 
     return second; 
    } 

    public String toString(){ 
     return getHour() + ":" + getMinute() + ":" + getSecond(); 
    } 
} 
+3

你的問題目前沒有意義。 「將一個方法調用到另一個構造函數中」是什麼意思?請解釋你想要*達到*,而不是你認爲適合實現它的方式... –

+0

好吧,我想我是問我想達到什麼,我試圖從setTime傳遞這個信息( ),到時間() – Gmenfan83

+0

也許在代碼中引用'elapsedTime'會讓我們看到你想要達到的目標。 –

回答

1
public Time() { 
    setTime(0L); 
} 

調用構造函數中的重寫方法是不好的做法,雖然。因此,你應該使這個方法是私人的或最終的,或者讓這個類本身成爲最終的。另外,你的方法有點奇怪,因爲它需要一段時間作爲參數,但是不會對它做任何事情。

0

首先,你爲什麼要從同一個類的方法中調用一個類構造函數?
的事情是,如果你正在訪問的類,你應該之前調用構造函數,除非你的方法是靜態的,因此,例如,你可以這樣做:

public static void setTime(long elapsedTime){ 
    ... 
    new Time(elapsedTime); 
    ... 
} 
從調用部分

然後:

Time.setTime(1L); 

雖然我覺得這可能會回答你的問題(如果我理解正確的),真正的問題是,爲什麼從一個方法調用同一個類的構造函數?只是調用構造函數並將方法的所有邏輯放入它中,不是更好嗎?

我希望這有助於。

+0

謝謝你的幫助,我很抱歉,如果我不清楚在我自己的問題,我想我我也很困惑。 – Gmenfan83

+0

也許你需要的僅僅是一個'public Time(long elapsedTime)'構造函數? – skw

+0

說它需要是一個沒有參數的構造函數,所以不會工作 – Gmenfan83

相關問題