2014-02-17 100 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