首页 文章

Java时钟分配

提问于
浏览
1

对于我的任务,我们假设要制作一个时钟 . 我们需要小时,分钟和秒的变量以及setHours / getHours,setMinutes / getMinutes,setSeconds / getSeconds等方法 . 我还需要一个addClock()方法来实现两个时钟对象的总和以及一个减少时钟的tickDown()方法 . 此外,我需要一个tick()方法,将Clock对象增加一秒 .

这是我到目前为止所拥有的......

public class Clock {

   private int hr; //store hours
   private int min; //store minutes
   private int sec; //store seconds

   // Default constructor

   public Clock () {
      setClock (0, 0, 0);
   }

   public Clock (int hours, int minutes, int seconds) {
      setClock (hours, minutes, seconds);
   }

   public void setClock (int hours, int minutes, int seconds) {
      if (0 <= hours && hours < 24)
         hr = hours;
      else
         hr = 0;
      if (0 <= minutes && minutes < 60)
         min = minutes;
      else
         min = 0;
      if (0 <= seconds && seconds < 60)
         sec = seconds;
      else
         sec = 0;
   }

   public int getHours() {
      return hr;
   }

   public int getMinutes() {
      return min;
   }

   public int getSeconds() {
      return sec;
   }

   public void addClock( Clock secondClock ) {
      this.sec += secondClock.getSeconds();
      this.min += secondClock.getMinutes();
      //add overflow to minutes from seconds
      this.min +=(int)(this.sec/60);
      //update seconds 
      this.sec = this.sec % 60;
      this.hr += secondClock.getHours();
      //add overflow to minutes from seconds
      this.hr +=(int)(this.min/60);
      //update minutes
      this.min = this.min % 60;
      //adjust hours
      this.hr = this.hr % 24;
   }

   public void tick(){
      this.sec += 1;
      //add overflow to minutes from seconds
      this.min +=(int)(this.sec/60);
      //update seconds 
      this.sec = this.sec % 60;
      //add overflow to minutes from seconds
      this.hr +=(int)(this.min/60);
      //update minutes
      this.min = this.min % 60;
      //adjust hours
      this.hr = this.hr %24;
   }

   public void tickDown(){
      this.sec -= 1;
      if(this.sec <0){
         this.sec+=60;
         this.min-=1;
      }
      if(this.min<0){
         this.min+=60;
         this.hr-=1;
      }
      if(this.hr<0){
         this.hr+=24;
      }
   }
}

3 回答

  • 0

    你可以写如下 addClock()

    public void addClock(Clock secondClock){
           this.second += secondClock.getSecond();
           this.minute+= secondClock.getMinute();
           //add overflow to minutes from seconds
           this.minute+=(int)(this.second/60);
           //update seconds 
            this.second = this.second % 60;
           this.hour += secondClock.getHour();
           //add overflow to minutes from seconds
    
            this.hour+=(int)(this.minute/60);
           //update minutes
            this.minute= this.minute% 60;
    
            //adjust hours
            this.hour = this.hour%24;
        }
    

    同样你可以编写 ticktickDown 方法,只是区别于 you will not have any argument in the method and you need to readjust minutes and hours after adding subtracting 1 from seconds

    public void tick(){
           this.second += 1;
           //add overflow to minutes from seconds
           this.minute+=(int)(this.second/60);
           //update seconds 
           this.second = this.second % 60;
           //add overflow to minutes from seconds
            this.hour+=(int)(this.minute/60);
           //update minutes
            this.minute= this.minute% 60;
            //adjust hours
            this.hour = this.hour%24;
        }
    
      public void tickDown(){
           this.second -= 1;
           if(this.second <0){
              this.second+=60;
              this.minute-=1;
            }
           if(this.minute<0){
              this.minute+=60;
              this.hour-=1;
            }
           if(this.hour<0){
              this.hour+=24;
           }
        }
    

    main 方法添加为:

    public static void main(String[]  args){
          Clock clock1 = new Clock(2,4,7);
          Clock clock2 = new Clock(8,26,57);
          clock1.tick();
          int newSeconds = clock1.getSeconds();
          //validate it should be 8 now
    
          clock2.tickDown();
          newSeconds = clock1.getSeconds();
          //validate it should be 56 now
    
          clock1.addClock(clock2);
          //get Hour, minute and second from clock1 and validate
          int newHour = clock1.getHours();
          int nuwMinute = clock1.getMinutes();
          newSeconds = clock1.getSeconds();
          //validate if they are with the right expected value or not
      }
    
  • 1

    您可以通过维持刻度来简化刻度逻辑 . 从刻度值中提取小时,分钟和秒 .

    public Clock
    {
     long ticks = 0;
     public void tick()
     {
       ticks++;
     }
    
     public void tickDown()
     {
      ticks--;
     }
    
     public int getSeconds()
     {
       return ticks % 60;
     }
    
     public int getMinutes()
     {
       return (ticks / 60) % 60;
     }
    
     public int getHours()
     {
          return (ticks / (60 * 60)) % 24;
     }
     }
    
  • 3

    您必须了解有关Java语言的更多信息 . ;-)

    if( condition ) { /* no ';' here */
       <block when true>
    }
    else {
       <block when false>
    }
    

    我建议,主要是缺失

    public static void main( String args[] ) {
       Clock c1 = new Clock( 9, 59, 59 );
       c1.tickSeconds();
       System.err.println( c1 ); // You have to overload toString()
    }
    

相关问题