创建一个Java时钟。增加时间

时间:2014-11-22 13:01:48

标签: java

我正在用Java创建一个时钟。我已经设法做了一些非常基本的东西,现在我想实现一个功能。

如果我将时间设置为12:04:59并使用我的timeTick方法,它将增加1秒的时间,但问题是它会说时间是12:04:60而且它没有改为12:05:00。 我现在已经挣扎了一段时间,我无法找到解决方案。

我的代码如下,我希望你能帮助我,

 public class Clock{

        public int seconds;
        public int minutes;
        public int hours;

        public Clock ( int InsertSeconds, int InsertMinutes, int InsertHours){    

            seconds = InsertSeconds;
            minutes = InsertMinutes;
            hours   = InsertHours;
        }

        public void timeTick(){

            seconds = seconds + 1;

        }
        public String toString(){

            return hours + ":" + minutes + ":" + seconds; 

        }


    }

我不打算使用Imports,因为我是一个初学者,如果我们能保持简单就会很棒。

5 个答案:

答案 0 :(得分:1)

此处的问题在于 timeTick()功能。在一个真实的时钟示例中,我们有一些额外的计数规则。每次我们数到60秒,我们都会加一分钟。每次我们数到60分钟,我们增加一个小时。所以你必须实施这些规则。

// lets make some simple code
public void timeTick(){
     seconds = seconds + 1; // you can also use seconds++; it means exactly the same thing

     if(seconds == 60){
         minutes++; // we reached a minute, we need to add a minute
         seconds = 0; // we restart our seconds counter
         if(minutes == 60){
             hours++; // we reached an hour, we need to add an hour
             minutes = 0; // we restart our minutes counter
             // and so on, if you want to use days (24 h a day) , months ( a bit more difficult ), ...
         }
     }
}

我希望这会对你有所帮助,对于初学者来说,将代码的第二部分分成一个处理这种情况的函数可能是个好主意。祝你好运!

答案 1 :(得分:0)

您可以检查何时有60秒,然后将秒数重置为零,并将分钟数增加1.例如

if (the condition you want to check) {
    //increase the number of minutes.
    //reset number of seconds.
}

如果你输入超过60秒的秒值,你需要计算出等于使用除法的分钟数,以及使用模数的剩余秒数运算符:%例如

seconds = 125;
minutes = seconds / 60; // 2 minutes
remaining_seconds = seconds % 60; // 5 seconds

答案 2 :(得分:0)

这个怎么样:

public void timeTick () {
    seconds++;
    while (seconds >= 60) {
        minutes++;
        seconds-=60;
    }
    while (minutes >= 60) {
        hours++;
        minutes-=60;
    }
}

答案 3 :(得分:0)

试试这个:

public void timeTick () {
    seconds++;
    if (seconds == 60)
    {  
        seconds = 0;
        minutes++;
        if (minutes == 60)
        {
            minutes = 0;
            hours++;
        }
    }
}

答案 4 :(得分:0)

试试这个:

public class Clock{

    public int seconds;
    public int minutes;
    public int hours;

    public Clock ( int InsertSeconds, int InsertMinutes, int InsertHours){    

        seconds = InsertSeconds;
        minutes = InsertMinutes;
        hours   = InsertHours;
    }

    public void timeTick(){

        seconds = seconds + 1;
        if(seconds==60){
          minutes++;
          seconds=0;
          if(minutes==60){
             hours++;
             minutes=0;
          }
        }
    }
    public String toString(){

        return hours + ":" + minutes + ":" + seconds; 

    }


}