所以,基本上我在用Java做一个24小时的计时器(秒表)程序,但是时间从来不会增加1小时,为什么?
基本上,我用Java编写了一个24小时的计时器(秒表)程序,但时间从来不会增加1小时,为什么? 我不知道为什么小时数没有显示每过一小时后的小时数。 下面是我的程序:所以,基本上我在用Java做一个24小时的计时器(秒表)程序,但是时间从来不会增加1小时,为什么?,java,multithreading,Java,Multithreading,基本上,我用Java编写了一个24小时的计时器(秒表)程序,但时间从来不会增加1小时,为什么? 我不知道为什么小时数没有显示每过一小时后的小时数。 下面是我的程序: public class Real { public static void Th() { int hrs=0,min=0,sec=0; int temp=0; try { Thread t=Thread.currentThread(); System.out.println(
public class Real
{
public static void Th()
{
int hrs=0,min=0,sec=0;
int temp=0;
try
{
Thread t=Thread.currentThread();
System.out.println(sec);
boolean flag=false;
System.out.println("\t\t\t\t\t\t*****Timer*******");
System.out.println("HOURS:MINUTES:SECONDS");
while(flag==false)
{
System.out.println("\f\t\t\t\t\t\t*****Timer*******");
System.out.println("HOURS:MINUTES:SECONDS");
System.out.println(hrs+"\t"+min+"\t"+sec);
t.sleep(1000);//1 sec
sec++;
temp=min;
if(sec==60)
{
min++;
sec=0;
}
if(temp==60&&sec==60)
{
hrs++;
temp=0;
}
if(min==59)
{
min=0;
}
if(hrs==24||hrs==12)
{
if(hrs==12)
{
hrs=0;
}
else if(hrs==25)
{
flag=true;
}
}
}
}
catch(InterruptedException e)
{
System.out.println("THREAD INTERRUPTED");
}
}
}
您应该查看以下代码:
if(sec==60) {
min++;
sec=0;
}
if(temp==60&&sec==60) {
hrs++;
temp=0;
}
您需要的是
hrs++代码>将被调用。为了满足if语句中的条件,temp
和sec
都需要60的值。但是,sec
在该状态下不能为60,因为它被sec=0覆盖代码>在上面的if语句中。这不是在Java中实现计时器的好方法,但是如果删除temp
变量,只使用min
执行所有计算,则可以使代码正常工作。将if(temp==60&&sec==60)
替换为if(min==60)
并删除下一个if(min==59)
。另外,因为当小时数达到12小时时,你会将其重置为零,所以你的循环永远不会结束。你最好使用模运算。要实现计时器,你最好使用