在Java中创建时间类

在Java中创建时间类,java,time,Java,Time,所以我的任务是创建一个Time类,它包含一个小时值和一个分钟值来表示时间。我将使用“军事时间”,所以上午12:01是0001,下午1:00是1300。我可以假设有效的军事时间在0000到2359之间。有效标准时间范围为上午12:00至晚上11:59。时间应包括两个构造器: Time()-将时间设置为1200的默认构造函数。 时间(inth,intm)-如果h介于1和23之间(含1和23),则将小时设置为h。否则,将小时设置为0。如果m介于0和59之间(含0和59),请将分钟数设置为m。否则,将分

所以我的任务是创建一个Time类,它包含一个小时值和一个分钟值来表示时间。我将使用“军事时间”,所以上午12:01是0001,下午1:00是1300。我可以假设有效的军事时间在0000到2359之间。有效标准时间范围为上午12:00至晚上11:59。时间应包括两个构造器:

Time()-将时间设置为1200的默认构造函数。 时间(inth,intm)-如果h介于1和23之间(含1和23),则将小时设置为h。否则,将小时设置为0。如果m介于0和59之间(含0和59),请将分钟数设置为m。否则,将分钟数设置为0。 时间应包括以下方法:

String toString()-以长度为4的字符串形式返回时间,格式为:0819。注意,如果小时或分钟是一位数字,它应该先打印一个零。例如,6应打印为06

String convert()-以从军用时间转换为标准时间的字符串形式返回时间。例如,0545变为上午5:45,1306变为下午1:06

void increment()-将时间提前一分钟。记住60分钟等于1小时。因此,如果你的时间是0359,加上一分钟,它就变成0400。2359应该增加到0000

这是我写的(除了main方法):

我当前的输出是:

time1: 0000
convert time1 to standard time: 0am
time1: 0000
increment time1 five times: 0005

time2: 0000
increment time2 67 times: 0107
convert to time2 standard time: 8am
time2: 0107

time3: 0000
convert time3: 0am

time4: 0000
convert time4: 0am

time5: 0000
convert time5: 0am

time6: 0000
convert time6: 0am

time7: 0000
convert time7: 0am
increment time7: 0001
convert time7: 1am

我的编译器告诉我到处都有问题,我不知道在哪里。如果有人能帮我看一下,找出问题所在,那将非常有帮助。谢谢大家!

构造函数的问题是,您没有将值赋给类变量,而是赋给方法变量,这就是代码的样子

public Time(int h, int m)
    {
        if ( h >= 1 && h <= 23)
            h = hour;
        else 
            hour = 0;
        if ( m >= 0 && m <= 59)
            m = minute;
        else 
            minute = 0;
    }
公共时间(整数小时,整数米)
{

如果(h>=1&&h=0&&m=1&&h=0&&m构造函数出现问题,则您没有将值赋给类变量,而是赋给方法变量,这就是代码的外观

public Time(int h, int m)
    {
        if ( h >= 1 && h <= 23)
            h = hour;
        else 
            hour = 0;
        if ( m >= 0 && m <= 59)
            m = minute;
        else 
            minute = 0;
    }
公共时间(整数小时,整数米)
{

如果(h>=1&&h=0&&m=1&&h=0&&m构造函数出现问题,则您没有将值赋给类变量,而是赋给方法变量,这就是代码的外观

public Time(int h, int m)
    {
        if ( h >= 1 && h <= 23)
            h = hour;
        else 
            hour = 0;
        if ( m >= 0 && m <= 59)
            m = minute;
        else 
            minute = 0;
    }
公共时间(整数小时,整数米)
{

如果(h>=1&&h=0&&m=1&&h=0&&m构造函数出现问题,则您没有将值赋给类变量,而是赋给方法变量,这就是代码的外观

public Time(int h, int m)
    {
        if ( h >= 1 && h <= 23)
            h = hour;
        else 
            hour = 0;
        if ( m >= 0 && m <= 59)
            m = minute;
        else 
            minute = 0;
    }
公共时间(整数小时,整数米)
{

如果(h>=1&&h=0&&m=1&&h=0&&m,则构造函数赋值将如前面的回答中所述反转

另外,在
toString
方法中,在您要执行的位置添加一个ultimate
else
子句
s=hour+minute

构造函数赋值与前面的答案中所述相反

另外,在
toString
方法中,在您要执行的位置添加一个ultimate
else
子句
s=hour+minute

构造函数赋值与前面的答案中所述相反

另外,在
toString
方法中,在您要执行的位置添加一个ultimate
else
子句
s=hour+minute

构造函数赋值与前面的答案中所述相反

另外,在
toString
方法中,在您要执行的位置添加一个ultimate
else
子句
s=hour+minute

您的问题在构造函数、toString()convert()方法中

相应的代码更改如下:

public MultiLevel(int h, int m)
{
    if ( h >= 1 && h <= 23)
        hour = h;
    else 
        hour = 0;
    if ( m >= 0 && m <= 59)
        minute = m;
    else 
        minute = 0;
}

public String toString()
{
    String s = "";
    if ( hour < 10 && minute < 10)
        s = "0" + hour + "0" + minute;
    else if ( hour < 10 && minute > 10)
        s = "0" + hour + minute;
    else if ( hour > 10 && minute < 10)
        s = hour + "0" + minute;
    else if ( hour > 10 && minute > 10)
        s = hour  +""+ minute;
    else if ( hour == 0)
        s = "0" + hour + minute;
    else if ( minute == 0)
        s = hour + "0" + minute;

    return s;

}

public String convert()
{
    String c = "";

    if ( hour > 12)
    {
        if(hour >10){
            if((hour - 12) == 12)
                 c = (hour - 12) +":"+ minute + "am";
            else
               c = (hour - 12) +":"+ minute + "pm";
        }
        else
        {
            c = "0" + (hour - 12) +":"+ minute + "pm";
        }
    }
    else
        c = hour +":"+ minute + "am";
    if(minute == 0)
    {
        c= c.substring(0, c.length()-2)+"0"+c.substring(c.length()-2, c.length());
    }
    return c;
}
公共多级(inth,intm)
{
如果(h>=1&&h=0&&m 10)
s=“0”+小时+分钟;
否则,如果(小时>10分钟<10分钟)
s=小时+0“+分钟;
否则,如果(小时>10分钟和分钟>10分钟)
s=小时+分钟;
否则,如果(小时==0)
s=“0”+小时+分钟;
否则如果(分钟==0)
s=小时+0“+分钟;
返回s;
}
公共字符串转换()
{
字符串c=“”;
如果(小时>12)
{
如果(小时>10){
如果((小时-12)=12)
c=(小时-12)+“:”+分钟+“上午”;
其他的
c=(小时-12)+“:”+分钟+“下午”;
}
其他的
{
c=“0”+(小时-12+):“+分钟+”下午;
}
}
其他的
c=小时+“:”+分钟+“上午”;
如果(分钟==0)
{
c=c.substring(0,c.length()-2)+“0”+c.substring(c.length()-2,c.length());
}
返回c;
}

您的问题在构造函数、toString()convert()方法中

相应的代码更改如下:

public MultiLevel(int h, int m)
{
    if ( h >= 1 && h <= 23)
        hour = h;
    else 
        hour = 0;
    if ( m >= 0 && m <= 59)
        minute = m;
    else 
        minute = 0;
}

public String toString()
{
    String s = "";
    if ( hour < 10 && minute < 10)
        s = "0" + hour + "0" + minute;
    else if ( hour < 10 && minute > 10)
        s = "0" + hour + minute;
    else if ( hour > 10 && minute < 10)
        s = hour + "0" + minute;
    else if ( hour > 10 && minute > 10)
        s = hour  +""+ minute;
    else if ( hour == 0)
        s = "0" + hour + minute;
    else if ( minute == 0)
        s = hour + "0" + minute;

    return s;

}

public String convert()
{
    String c = "";

    if ( hour > 12)
    {
        if(hour >10){
            if((hour - 12) == 12)
                 c = (hour - 12) +":"+ minute + "am";
            else
               c = (hour - 12) +":"+ minute + "pm";
        }
        else
        {
            c = "0" + (hour - 12) +":"+ minute + "pm";
        }
    }
    else
        c = hour +":"+ minute + "am";
    if(minute == 0)
    {
        c= c.substring(0, c.length()-2)+"0"+c.substring(c.length()-2, c.length());
    }
    return c;
}
公共多级(inth,intm)
{
如果(h>=1&&h=0&&m 10)
s=“0”+小时+分钟;
否则,如果(小时>10分钟<10分钟)
s=小时+0“+分钟;
否则,如果(小时>10分钟和分钟>10分钟)
s=小时+分钟;
否则,如果(小时==0)
s=“0”+小时+分钟;
否则如果(分钟==0)
s=小时+0“+分钟;
返回s;
}
公共字符串转换()
{
字符串c=“”;
如果(小时>12)
{
如果(小时>10){
如果((小时-12)=12)
c=(小时-12)+“:”+分钟+“上午”;
其他的
c=(小时-12)+“:”+分钟+“下午”;
}
其他的
{
c=“0”+(小时-12+):“+分钟+”下午;
}
}
其他的
c=小时+“:”+分钟+“上午”;
如果(分钟==0)
{
c=c.substring(0,c.length()-2)+“0”+c.substring(c.length()-2,c.length());
}
返回c;
}

您的问题在构造函数、toString()convert()方法中

相应的代码更改如下:

public MultiLevel(int h, int m)
{
    if ( h >= 1 && h <= 23)
        hour = h;
    else 
        hour = 0;
    if ( m >= 0 && m <= 59)
        minute = m;
    else 
        minute = 0;
}

public String toString()
{
    String s = "";
    if ( hour < 10 && minute < 10)
        s = "0" + hour + "0" + minute;
    else if ( hour < 10 && minute > 10)
        s = "0" + hour + minute;
    else if ( hour > 10 && minute < 10)
        s = hour + "0" + minute;
    else if ( hour > 10 && minute > 10)
        s = hour  +""+ minute;
    else if ( hour == 0)
        s = "0" + hour + minute;
    else if ( minute == 0)
        s = hour + "0" + minute;

    return s;

}

public String convert()
{
    String c = "";

    if ( hour > 12)
    {
        if(hour >10){
            if((hour - 12) == 12)
                 c = (hour - 12) +":"+ minute + "am";
            else
               c = (hour - 12) +":"+ minute + "pm";
        }
        else
        {
            c = "0" + (hour - 12) +":"+ minute + "pm";
        }
    }
    else
        c = hour +":"+ minute + "am";
    if(minute == 0)
    {
        c= c.substring(0, c.length()-2)+"0"+c.substring(c.length()-2, c.length());
    }
    return c;
}
公共多级(inth,intm)
{
如果(h>=1&&h=0&&m 10)
s=“0”+小时+分钟;
否则,如果(小时>10分钟<10分钟)
s=小时+0“+分钟;
否则,如果(小时>10分钟和分钟>10分钟)
s=小时+分钟;
埃尔斯
import com.vinay.timeclass.exceptions.InvalidTimeException;

/**
 * @author Dell
 *
 */
public class Time {

    private int hour;
    private int minute;

    public Time() {
        hour = 0;
        minute =0;
    }

    public Time(int hour, int minute) throws InvalidTimeException {
        if(hour > 24 || minute > 60)
            throw new InvalidTimeException(" Hour cannot be greater than 24 and minute cannot be greater than 24 ");

        if(hour >=1 && hour<=23) 
            this.hour = hour;
        else 
            this.hour = 0;


        if (minute >=0 && minute <=59) {
            this.minute =  minute;
        } else {
            minute = 0; 
        }


    }

    @Override
    public String toString() {
        StringBuilder timeBuilder = new StringBuilder();
        if(hour < 10 && minute < 10) {
            timeBuilder.append("0").append(hour).append(":").append("0").append(minute);
        } 
        else if (hour < 10 && minute > 10) {
            timeBuilder.append("0").append(hour).append(":").append(minute);
        }
        else if (hour > 10 && minute < 10) {
            timeBuilder.append(hour).append(":").append("0").append(minute);
        }else if(hour > 10 && minute > 10) {
            timeBuilder.append(hour).append(":").append(minute);
        }else if(hour == 0) {
            if(minute < 10)
            timeBuilder.append("0").append(hour).append(":0").append(minute);
            else            
            timeBuilder.append(hour).append(":").append(minute);
        }else if (minute == 0) {
            if(minute < 10)
                timeBuilder.append("0").append(hour).append(":0").append(minute);
                else            
                timeBuilder.append(hour).append(":0").append(minute);
        }


        return timeBuilder.toString();
    }

    public int getHour() {
        return hour;
    }

    public void setHour(int hour) throws InvalidTimeException{
        if(hour>24)
            throw new InvalidTimeException("Hour cannot be greater than 24");

        this.hour = hour;

    }

    public int getMinute() {
        return minute;
    }

    public void setMinute(int minute) throws InvalidTimeException{
        if(minute>60)
            throw new InvalidTimeException("Minute cannot be greater than 60");
        this.minute = minute;
    }

    public String convert(){

        StringBuilder timeBuilder = new StringBuilder();
        if(hour > 11) {
            if(hour == 12) {
                timeBuilder.append(hour).append(":").append(minute).append(" PM");
            }else if(hour > 12) {
                timeBuilder.append(hour-12).append(":").append(minute).append(" PM");
            }

        }else if(hour == 0) {
            timeBuilder.append(hour+12).append(":").append(minute).append(" AM");
        }else {
            timeBuilder.append(hour).append(":").append(minute).append(" AM");
        }

        String timeString = timeBuilder.toString();
        if(minute < 10) {
            timeString = timeString.substring(0, timeString.length()-4)+"0"+minute+" "+timeString.substring(timeString.length()-2, timeString.length());
        }
        return timeString;

    }


    public void increment() {
        if(hour== 23 && minute == 59) {
            hour = 0;
            minute = 0;
        }else {
            minute ++;
            if(minute == 60) {
                hour++;
                minute = 0;
                if(hour == 24) {
                    hour =0;
                }
            }
            else if(hour == 24) {
                hour = 0;
            }
        }
    }








}