2011-09-28 32 views
0

好吧,這是家庭作業,我掙扎了一下,我不知道要傳入toString方法什麼,我不太確定我的方法獲取當前和消逝的時間是正確的。然後我必須將它傳遞給主方法並在輸出語句中顯示時間。這不是我的問題,我只能有3個變量,我怎麼能從當前時間算出已用時間,並仍然保持原來的小時,秒,分鐘變量而不改變它們,這樣來自兩個時間構造函數的所有數據都保存在那些變量?我希望我是有道理的。感謝任何輸入Java時間類

package chapter_10; 


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

    public void time() { 
     long second = System.currentTimeMillis(); 
     long minute = System.currentTimeMillis(); 
     long hour = System.currentTimeMillis(); 
    } 
    public void setTime(long elapsedTime){ 
     long millisecond = System.currentTimeMillis(); 
     long second = millisecond/1000; 
     long minute = second/60; 
     long hour = minute /60; 
    } 
    public long getHour() { 
     return hour; 
    } 

    public long getMinute() { 
     return minute; 
    } 

    public long getSecond() { 
     return second; 
    } 

    public String toString(){ 
     return // what should i return here, String.towhat? 
    } 
} 

這是分配,只是澄清。 時間等級:

給它3個私人數據成員分小時,分,秒。使用long或int類型。 如果你使用int,你必須投射到ctors中。 添加一個無參數ctor,它使用p38上代碼2.6中的代碼將 的值分配給當前時間的小時,分​​鍾和秒。 添加另一個ctor,它將採用名爲elapseTime的單個長參數(更好的 將爲elapsedTime),這是自Unix紀元日期以來的毫秒數。 這個第二個ctor也將使用代碼,如代碼2.6所示,設置數據成員 自該紀元以來經過的時間。 第三個ctor是沒有必要的。 爲每個數據成員添加一個getter。每個吸氣器只需要一個聲明。 吸氣劑是必需的,因爲數據成員是私人的。 添加一個toString方法,該方法返回Time對象的小時,分​​鍾和秒。 主類:

在主要方法中使用無參數ctor創建一個Time對象。 與另一個ctor創建幾個時間對象。 顯示您實例化的每個對象的時間。

回答

0

您沒有正確設置這些私人數據成員。

時間方法中的值會影響私有數據成員。

擔心,然後修復toString()。

0

那麼,toString通常是一個字符串,它以一種獨特的方式表示你的對象。由於你的對象在這裏是時間,所以一個獨特的時間是由時間來表示的。

所以,如果你寫的東西,如:

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

這將是一個很好的實現toString方法,因爲這種成功代表這是什麼對象。

PS:你的毫秒,也不是所有的字段都作爲字段存儲在你的班級中!檢查出!

編輯:現在我注意到,你的代碼根本無法工作。 System.currentTimeMillis()以UTC形式返回時間。這意味着,你正在做的計算根本不起作用。您必須首先從UTC轉換爲有效的毫秒方法。考慮使用日期/日曆類來處理時間。

+0

我明白你在說什麼,我省略了我的第二個=「等等」中的「長」,我不需要聲明它,因爲它已經完成了,當我在我的程序中聲明它們爲私人頂端 – Gmenfan83

+0

@Jason :這不僅僅是「不需要」。額外的聲明實際上創建了一個新的變量,阻止你的私人領域獲得價值。 – ccoakley

+0

是的,你是一個新的變量,因此壓倒了課堂上的各個領域。在這種情況下,如果您是新手,請記住始終使用THIS操作員。這樣你總是會做正確的事情。 – SHiRKiT

0

我無法保證我完全正確地理解您的問題。你有沒有考慮將實際的呼叫結果存儲到currentTimeMillis()?然後你可以有三個變量:

long startTime; 
long endTime; 
long elapsedTime; 

然後在需要時提取相關部分?

+0

我不相信任務的參數會允許的,我只能宣佈三個變量,第二,分鐘,小時 – Gmenfan83

+0

公平遊戲。我沒有看到任務。 –

+0

不是我期望任何人爲我完成任務,只是爲了在此澄清它簡而言之: – Gmenfan83