2014-02-17 70 views
0

這是我對我的補償科幻類做了一個方法:方法不能正常工作

public Time (int y, int x) 
{ 
minute = x; 
hour = y; 
if (minute>59 || minute<0) 
{ 
minute = 0; 
} 
if (hour>=24 || hour<0) 
{ 
hour=0; 
} 
} 

void addOne() 
{//Adds one to the minute. Still in military time 
minute++; 
if (minute == 60) //Makes minute never exceeds 59 minutes. Hour is added 1 and minute is set to 0 
{ 
minute = 0; 
hour++; 
if (hour==24) 
{ 
    hour=0; 
} 
} 
} 

public String convert() 
{//Converts to standard time with am and pm 
String timer = null; 
int counter = 0; 

if (hour<12) 
{ 
if (hour<9) 
    { 
    if (minute>9) 
    { 
    timer = "0"+hour+":"+minute+" A.M."; 
    } 
    if (minute<10) 
    { 
    timer = "0"+hour+":0"+minute+" A.M"; 
    } 
    } 

if (hour>9) 
{ 
    if (minute>9) 
    { 
    timer = ""+hour+":"+minute+" A.M."; 
    } 
    if (minute<10) 
    { 
    timer = ""+hour+":0"+minute+" A.M"; 
    } 
    } 
} 

if (hour ==12) 
    { 
    if (minute>9) 
    { 
    timer = ""+hour+":"+minute+" P.M."; 
    } 
    if (minute<10) 
    { 
    timer = ""+hour+":0"+minute+" P.M"; 
    } 
} 



if (hour>12) 
{ 
    hour-=12; 
    if (hour ==12) 
    { 
    if (minute>9) 
    { 
    timer = ""+hour+":"+minute+" A.M."; 
    } 
    if (minute<10) 
    { 
    timer = ""+hour+":0"+minute+" A.M"; 
    } 
} 

    if (hour<9) 
    { 
    if (minute>9) 
    { 
    timer = "0"+hour+":"+minute+" P.M."; 
    } 
    if (minute<10) 
    { 
    timer = "0"+hour+":0"+minute+" P.M"; 
    } 
    } 

if (hour>9) 
{ 
    if (minute>9) 
    { 
    timer = ""+hour+":"+minute+" P.M."; 
    } 
    if (minute<10) 
    { 
    timer = ""+hour+":0"+minute+" P.M"; 
    } 
} 

} 

return timer; 
} 

這是假設來運行代碼:我得到的輸出

Time time7 = new Time(23,59); 
System.out.println("\ntime7: " + time7); 
System.out.println("convert time7: " + time7.convert()); 
time7.addOne(); 
System.out.println("increment time7: " + time7); 
System.out.println("convert time7: " + time7.convert()); 

time7:2359

轉換time7:11:59 P .M。

增量time7:1200

轉換time7:12:00 PM

但我需要的輸出是:

time7:2359

轉換time7:11 :59 PM

增量time7:0000

轉換time7:12:00 A.M

所有其它部件的程序工作得很好,直到我到time7

+0

你的很多,如果條件的問題,因爲你的代碼進入多個if條件並覆蓋由前面的條件設置的值。無論是使用switch-case還是使用if..else使路徑獨佔。 – RaviH

回答

3

hour組開始至23日,那麼在此之後代碼:

if (hour>12) 
{ 
    hour-=12; 
    ... 

是什麼hour價值?

即使您修復了這個錯誤,恐怕您的代碼仍然是不必要的複雜。查看String.format()方法,可以更好地爲輸出格式化數字,而不需要分別處理所有這些「特殊情況」。

+0

時間time7 =新時間(23,59);小時是29,分鐘是59.這是用戶輸入。但我有私人詮釋小時= 0; private int minute = 0;之前的方法 – Hulu

+0

@Hulu小時是23分59.你有一個錯字。 –

+0

沒有接受,謝謝。另外我將如何簡化我的轉換方法?在我進行了模數除法和幾個if語句之後,我簡化了代碼。 – Hulu

0

後你增加你轉換之前,你可以添加:

hour %= 24; 

如果小時是24,這將進而成爲0