Programme d'Horloge Java


J'essaie de faire un programme d'horloge en utilisant Java, et j'ai tout pour fonctionner correctement sauf que je ne peux pas amener le programme à changer les valeurs négatives à 0. Je ne peux pas non plus demander au programme de définir les valeurs des heures, des minutes et des secondes sur 0 si elles sont hors de portée. J'ai un programme de testeur que je dois utiliser et les valeurs d'horloge T1 et T2 sont incorrectes dans mon code. T1 doit être de 0:0:0 et T2 doit être de 0:0:0 ainsi. Cependant, lorsque je produis mon code, il apparaît que T1 est -3: -21: -30 et T2 est 24:60:60. Je sais qu'il y a quelque chose qui ne va pas avec mon code, mais je ne trouve pas le problème, si quelqu'un pouvait m'aider, ce serait grandement apprécié. Voici mon code, puis la deuxième section est le code du testeur que je dois utiliser.

 public class Clock
 {
     // instance variables
     private int hours;
     private int minutes;
     private int seconds;

   public void setHours(int newHours) {
    hours = newHours;
    if (hours<0 || hours > 24) {
        hours = 0;
      }
   }
   public void setMinutes(int newMinutes) {
    minutes = newMinutes;
    if (minutes<0 || minutes > 60) {
        minutes = 0;
    }
   }
   public void setSeconds(int newSeconds) {
    seconds = newSeconds;
    if(seconds<0 || seconds > 60) {
        seconds = 0;
    }
    }

/**
 * Constructor for objects of class Clock
 */
    public Clock(int newHour, int newMinute, int newSecond)
   {
    if (newHour > -1 || newHour < 24) {
        this.hours = newHour;
    }
    else {
        setHours(hours);
    }
    if (newMinute > -1 || newMinute < 60) {
        this.minutes = newMinute;
    }
    else {
        setMinutes(minutes);
    }
    if (newSecond > -1 || newSecond < 60) {
        this.seconds = newSecond;
    }
    else {
        setSeconds(seconds);
    }
}

public int getHours() {
    return hours;
}
public int getMinutes() {
    return minutes;
}
public int getSeconds() {
    return seconds;
}

public String toString() {
    return hours + ":"+minutes+":"+seconds;
}

public void tick() {
    seconds = seconds +1;
    if(seconds >= 60)
    {
        minutes ++;
        seconds = 0;
    }
    if(minutes >= 60)
    {
        hours++;
        minutes = 0;
    }
    if(hours >=24)
    {
        hours = 0;
    } 

}

} La pièce suivante est le code du testeur.

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

      //Create some clocks and print their times
      Clock c1 = new Clock(-3,-21,-30);
      System.out.println("T1: "+ c1);

      c1 = new Clock(24,60,60);
      System.out.println("T2: "+ c1);

      c1 = new Clock(3,21,30);
      System.out.println("T3: "+ c1);

      //Tick the clock twice and print its time
      c1.tick();
      c1.tick();
      System.out.println("T4: "+ c1);

      c1 = new Clock(3,30,59);
      c1.tick();
      System.out.println("T5: "+ c1);

       c1 = new Clock(3,59,59);
       c1.tick();
       System.out.println("T6: "+ c1);

       c1 = new Clock(23,59,59);
       c1.tick();
       System.out.println("T7: "+ c1);

       c1 = new Clock(0,0,1);
       c1.tick();
       System.out.println("T8: "+ c1);

       c1 = new Clock(1,1,1);
       c1.setHours(22);
       c1.setMinutes(30);
       c1.setSeconds(35);
       System.out.println("T9: "+ c1);       
       System.out.println("T10: " + c1.getHours() + ":"
                    +c1.getMinutes() + ":" + c1.getSeconds());
}

}

Author: mickeyvolmouse, 2018-04-25

2 answers

Votre état est mauvais. Lorsque vous écrivez ceci:

if (newHour > -1 || newHour < 24) {

Vous voulez vraiment dire ceci:

if (newHour > -1 && newHour < 24) {
 3
Author: nicomp, 2018-04-25 00:27:14

@nicomp est correct et vous devriez également utiliser >= 24 et 60 au lieu de >. Vous pouvez envisager de changer le constructeur pour Clock en

public Clock(int newHour, int newMinute, int newSecond) {
    setHours(newHour);
    setMinutes(newMinute);
    setSeconds(newSecond);
}

Puis effectuez toute votre validation dans les méthodes set, au lieu d'avoir une validation dans les méthodes set et une autre dans le constructeur.

 2
Author: Josef7, 2018-04-25 00:38:51