2017-03-16 36 views
1

在java中修改方法不起作用。一些幫助,將不勝感激

public JTime add(JTime t2){ 
    JTime sum = new JTime(); 
    sum.hour = this.hour + t2.hour; 
    sum.minute = this.minute + t2.minute; 
    sum.second = this.second + t2.second; 
    return sum; 
} 

public void increment (double seconds){ 
    this.second = seconds; 
    while(this.second >= 60.0){ 
     this.second -= 60.0; 
     this.minute += 1; 
    } 
    while(this.minute >= 60.){ 
     this.minute -=60; 
     this.hour +=1; 
    } 
    while(this.hour >= 24){ 
     int result = this.hour - 24; 
     this.hour = result; 
    } 


} 

主要

public static void main(String[] args) { 

    JTime startTime = new JTime(22, 50, 0.0); 
    JTime runningTime = new JTime(5, 16, 0.0); 
    JTime endTime = startTime.add(runningTime); 
    System.out.println(endTime); 
    } 
} 

我只是按照出版的一本書的方法。我想在這裏實現的是以24小時制顯示時間。 increment方法應該這樣做,但事實並非如此。某種幫助將不勝感激。謝謝。

+2

我沒有看到任何你實際調用'increment'的地方。 – yshavit

+0

我正在閱讀的書沒有提到任何關於調用的內容,所以我認爲該方法會自動更改它。 – Daniel

+0

您的預期投入和產出是多少?您的實際產出是多少? –

回答

0

add方法返回一個對象,所以你需要重寫它的toString或創建一個返回單個結果值的方法。例如:

@Override 
    public String toString() 
    { 
     return "Hours:"+this.hour+", minutes:"+this.minute+", seconds:"+this.second; 
    } 
0

使用整數除法/(7/5 == 1)和模%(7%5 == 2)一種能修復 溢出在三個字段:

int hour; 
int minute; 
int second; 

public JTime plus(JTime t2) { 
    JTime sum = new JTime(); 
    sum.hour = this.hour + t2.hour; 
    sum.minute = this.minute + t2.minute; 
    sum.second = this.second + t2.second; 
    normalize(); 
    return sum; 
} 

private void normalize() { 
    minute += second/60; 
    second %= 60; 
    hour += minute/60; 
    minute %= 60; 
    hour %= 24; 
} 

public void increment(int seconds) { 
    second += seconds; 
    normalize(); 
} 

@Override 
public String toString() { 
    return String.format("%02d:%02d:%02d", hour, minute, second); 
} 

add重命名爲plus以指示時間對象本身未遞增,但遞送新時間。

另外一個溢出(天數)會很好。

相關問題