2014-11-22 48 views
-2

我正在用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; 

     } 


    } 

我不打算使用的进口,因为我是一个初学者这将是巨大的,如果我们能够保持它的简单。

+2

首先试着用自己的言语向你自己解释一下你希望它采取什么样的行动,以及需要什么样的步骤来“修复”时间。 – 2014-11-22 13:06:06

回答

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 
+0

谢谢大家的建议。现在唯一的问题是,当我构造类Clock的对象时,该规则不适用。所以我也需要规则来申请当我构建下面的时间10:10:61 – 2014-11-22 13:34:10

+0

@WinstonNolten如果你使用我告诉你使用你以前的问题为无效的时间值输入的方法,你不会得到'10:10 :61',因为如果用户输入61,他们将被要求再次输入时间值。 – 2014-11-22 13:39:29

0

如何:

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

谢谢,我用过这个。唯一的问题是,在我使用我的方法显示时间之后,它会打印一个零而不是00,即10:10:59 + 1秒变为10:11:0。我尝试了一些东西,但我无法修复它 – 2014-11-24 17:27:51

+0

这就是我得到的。 public String setProperTimeFormat(){ if(seconds <10){ return“0”+ seconds; } else { return“”+ seconds; } } 对不起,没有正确添加代码。我不知道如何使用标签 – 2014-11-24 17:41:42

+0

@WinstonNolten我建议的方法会返回一个整数。但是你建议的方法看起来不错,可以将int转换为字符串。为了使更通用一些,你可以使用'public static String format(int i){String str = Integer.toString(i); while(str.length()<2)str =“0”+ str;返回str; }'。将来:在'' \' – msrd0 2014-11-24 20:16:10

0

试试这个:

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

@ msrd0中包含代码你能帮我理解当我们的代码被编辑时,我不希望人们不必要地麻烦(我是新手):) – 2014-11-22 13:11:53

+0

你的问题在哪里?如果你不同意我的编辑,你可以将它滚回 – msrd0 2014-11-22 13:15:45

+0

没有家伙我不反对,我只是好奇地想知道你在什么情况下编辑它们? – 2014-11-22 13:20:50

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; 

    } 


} 
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), ... 
     } 
    } 
} 

我希望这会帮助你,为启动它可能是代码的第二部分分成功能,这种情况涉及一个好主意。祝你好运!