Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
所以,基本上我在用Java做一个24小时的计时器(秒表)程序,但是时间从来不会增加1小时,为什么?_Java_Multithreading - Fatal编程技术网

所以,基本上我在用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(

基本上,我用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(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小时时,你会将其重置为零,所以你的循环永远不会结束。你最好使用模运算。要实现计时器,你最好使用