Java时钟程序

Java时钟程序,java,constructor,clock,accessor,mutators,Java,Constructor,Clock,Accessor,Mutators,我正试图用Java制作一个时钟程序,我让所有东西都正常工作,只是我不能让程序将负值改为0。如果小时、分钟和秒的值超出范围,我也无法让程序将其设置为0。我有一个测试程序,我必须使用和T1和T2时钟值是不正确的,在我的代码。T1应该是0:0:0,T2也应该是0:0:0。然而,当我输出代码时,结果是T1为-3:-21:-30,T2为24:60:60。我知道我的代码有问题,但我找不到问题所在,如果有人能帮助我,我将不胜感激。下面是我的代码,第二部分是我必须使用的测试仪代码 public class C

我正试图用Java制作一个时钟程序,我让所有东西都正常工作,只是我不能让程序将负值改为0。如果小时、分钟和秒的值超出范围,我也无法让程序将其设置为0。我有一个测试程序,我必须使用和T1和T2时钟值是不正确的,在我的代码。T1应该是0:0:0,T2也应该是0:0:0。然而,当我输出代码时,结果是T1为-3:-21:-30,T2为24:60:60。我知道我的代码有问题,但我找不到问题所在,如果有人能帮助我,我将不胜感激。下面是我的代码,第二部分是我必须使用的测试仪代码

 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;
    } 

}
}

你的情况不对。 当你写这篇文章时:

if (newHour > -1 || newHour < 24) {
if(newHour>-1 | | newHour<24){
你的意思是:

if (newHour > -1 && newHour < 24) {
if(newHour>-1&&newHour<24){
您的情况不正确。 当你写这篇文章时:

if (newHour > -1 || newHour < 24) {
if(newHour>-1 | | newHour<24){
你的意思是:

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

< /代码> @ NICOMP是正确的,您也应该使用>=24和60而不是>。您可以考虑将时钟的构造函数更改为

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

然后在SET方法中进行所有验证,而不是在SET方法和构造函数中有一些验证。

@ NICOMP是正确的,并且您也应该使用>=24和60而不是>。您可以考虑将时钟的构造函数更改为

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

然后在set方法中进行所有的验证,而不是在set方法和构造函数中进行一些验证。

我建议
if(newHour>=0&&newHour=0&&m-1&&m<60)@KevinAnderson-Okey-Dokey。我认为大多数开发人员习惯于您编写它的方式,而不是OP(newHour>=0&&newHour=0&&m-1&&m<60)@KevinAnderson-Okey-Dokey。我认为大多数开发人员都习惯于您编写它的方式,而不是OP。