我正在用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,因为我是一个初学者,如果我们能保持简单就会很棒。
答案 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;
}
}