【问题标题】:Design a class named Time in java在java中设计一个名为Time的类
【发布时间】:2013-10-26 22:50:24
【问题描述】:

我已经在这个代码上工作了 2 天,我所拥有的就是这个。我想我取得了一些进展,我想我差不多完成了。我唯一的问题是在我的公共 Time(long elapseTime) 构造函数中。读出的格式不正确或我做错了什么。 Time t2 = new Time(1382832000) 应该显示 384,120 小时,但它只显示 384 小时。我做错了什么?

public class Time{
    private long hour;
    private long minute;
    private long second;

  public Time(){
    //this(System.currentTimeMillis());
    second = (int) (System.currentTimeMillis()/ 1000) % 60 ;
    minute = (int) (System.currentTimeMillis() / 1000 / 60) % 60;
    hour   = (int) (System.currentTimeMillis() / 1000 / 60 / 60) % 24;

  }

  public Time(long elapseTime){
    //setTime(elapseTime);
    second = (elapseTime / 1000);
    minute = (elapseTime / 1000 / 60);
    hour   = (elapseTime / 1000 / 60 / 60);
  }
  Time(int hour, int minute, int second){
      /*hour = ((this.hour >= 0 && this.hour < 24) ? this.hour : 0);
      minute = ((this.minute >= 0 && this.minute < 6) ? this.minute : 0);
      second = ((this.second >= 0 && this.second < 24) ? this.second : 0);*/
      this.hour = hour;
      this.minute = minute;
      this.second = second;
    }
    public void setTime(long elapseTime){
      second = (int) (elapseTime / 1000) % 60 ;
      minute = (int) ((elapseTime / (1000*60)) % 60);
      hour   = (int) ((elapseTime / (1000*60*60)) % 24);
    }
     public long getHour() {
        return hour;
    }

    public long getMinute() {
        return minute;
    }

    public long getSecond() {
        return second;
    }

   public String toString(){
       return String.format("%02d:%02d:%02d", getHour(), getMinute(), getSecond());
   }

}

测试一下……

public class TestTimeClass{
   public static void main(String [] args){

      Time t1 = new Time();
      System.out.println(t1);
      //System.out.println(System.currentTimeMillis());
      Time t2 = new Time(1382832000);
      System.out.println(t2);
      t2.setTime(555550000);
      System.out.println(t2);

   }

}

输出是... 22:50:47
384:23047:1382832 // 这应该更像 384,120 : 23,047,200 : 1,382,832,000
10:19:10

【问题讨论】:

  • 它似乎在做它被指示做的事情。 1382832000 除以一千是 1382832。您希望 timeElapsed 以秒还是毫秒为单位?
  • 时间以毫秒为单位
  • 如果 timeElapsed 以秒为单位给出,那么您期望的输出就可以了。尝试将单位附加到您的标识符。
  • 它看起来像一个舍入错误。整数除法截断。为每 1000 个添加一个 '.0'

标签: java class time


【解决方案1】:

你的课很混乱。您似乎想同时表示一天中的 24 小时时间以及经过的时间。

另外,你应该检查你的数学,因为 1382832000 毫秒是 384 小时。

【讨论】:

  • 我希望它以 12 小时格式显示,但我未能成功。为当前时间创建 Time 对象的无参数构造函数。 (数据字段的值将表示当前时间。)构造一个 Time 对象的构造函数,该对象具有从 1970 年 1 月 1 日午夜开始经过的指定时间,以毫秒为单位。 (数据字段的值将表示这个时间。)构造一个具有指定小时、分钟和秒的 Time 对象的构造函数。
  • 我明白了。看来我的 Time() 构造函数的数学是关闭的,我认为我的时间是错误的。 GA 是 7:34,但时间显示为 11:34
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多