在程序中经常要对时间进行操作但是并没有时间类型的数据。 那么我们可以自己实现一个时间类来满足程序中的需要。

题目如下:
在程序中经常要对时间进行操作但是并没有时间类型的数据。
那么我们可以自己实现一个时间类来满足程序中的需要。
定义名为MyTime的类其中应有三个整型成员时hour分minute秒second
为了保证数据的安全性这三个成员变量应声明为私有。
为MyTime类定义构造方法以方便创建对象时初始化成员变量。
再定义diaplay方法用于将时间信息打印出来。

为MyTime类添加以下方法
addSecond(int sec)
addMinute(int min)
addHour(int hou)
subSecond(int sec)
subMinute(int min)
subHour(int hou)
分别对时、分、秒进行加减运算。

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

        Mytime mytime = new Mytime(23,55,10);
        mytime.disPlay();
        mytime.addSecond(34);
        mytime.disPlay();
        mytime.addMinute(67);
        mytime.disPlay();
        mytime.addHour(3);
        mytime.disPlay();
        mytime.subSecond(60);
        mytime.disPlay();
        mytime.subHour(3);
        mytime.disPlay();
        mytime.subMinute(44);
        mytime.disPlay();

    }
}
class Mytime{
    private int hour;
    private int minute;
    private int second;

    public void disPlay(){

        System.out.println("现在时间是: "+this.hour+"时"+this.minute+"分"+this.second+"秒");
    }

    public void addHour(int h){
        hour = (hour + h)%24;
    }
    public void subHour(int h){
        hour = (hour - h)%24;
        if(hour < 0){
            hour = 24 + hour;
        }
    }
    public void addMinute(int m){
        int t = 0;
        t = (minute + m)/60;
        minute = (minute + m)%60;
        if(t > 0){
            this.addHour(t);
        }
    }
    public void subMinute(int m){
        int t = 0;
        t = (minute - m)/60;
        if(m > minute) {
            minute = 60 + ((minute - m)%60);
            this.subHour(-(t-1));
        }
        else
            minute = minute - m;
    }
    public void addSecond(int s){
        int t = 0;
        t = (second + s)/60;
        second = (second + s)%60;
        if(t > 0){
            this.addMinute(t);
        }
    }
    public void subSecond(int s){
        int t = 0;
        t = (second - s)/60;
        if(s > second){
            second = 60 + ((second - s)%60);
            this.subMinute(-(t-1));
        }
        else
            second = second - s;
    }



    public Mytime(int hour, int minute, int second) {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }

    public Mytime() {
    }

    public int getHour() {
        return hour;
    }

    public void setHour(int hour) {
        this.hour = hour;
    }

    public int getMinute() {
        return minute;
    }

    public void setMinute(int minute) {
        this.minute = minute;
    }

    public int getSecond() {
        return second;
    }

    public void setSecond(int second) {
        this.second = second;
    }
}

测试结果:

在这里插入图片描述

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 日期类是一种用于处理时间和日期的数据类型,通过封装信息和提供相关方法来实现时间的加减操作。在面向对象程序设计,可以使用C语言来实现日期类。 首先,在日期类,我们需要定义一些成员变量来存储日期的信息,比如年、月、日。可以使用结构体来定义日期类的成员变量,如下所示: ```c typedef struct { int year; int month; int day; } Date; ``` 接下来,我们可以定义一些方法来实现日期的加减操作。例如,我们可以定义一个add方法来实现日期的加法操作。该方法可以接受一个整数参数n,表示要加的天数,然后将日期的天数加上n。代码如下: ```c void add(Date *date, int n) { date->day += n; } ``` 同样的方式,我们可以定义一个sub方法来实现日期的减法操作。该方法也可以接受一个整数参数n,表示要减去的天数,然后将日期的天数减去n。代码如下: ```c void sub(Date *date, int n) { date->day -= n; } ``` 通过这样的设计,我们可以使用日期类来进行时间的加减操作。例如,我们可以创建一个日期对象,并调用add或sub方法来增加或减少日期。代码如下: ```c int main() { // 创建一个日期对象 Date date = {2021, 10, 1}; // 增加10天 add(&date, 10); // 减少5天 sub(&date, 5); // 打印结果 printf("日期为:%d年%d月%d日\n", date.year, date.month, date.day); return 0; } ``` 通过上述代码,我们可以实现日期类的设计,从而实现时间的加减操作。当然,还可以根据需要,添加其他方法来实现更多功能,如计算两个日期之间的天数差、比较两个日期的大小等。 ### 回答2: 设计一个日期类,实现时间的加、减操作。首先,我们需要定义一个日期类,该类包含年、月、日三个私有成员变量,以及一些公有成员函数用于操作日期。为了实现时间的加、减操作,我们可以定义两个成员函数add和sub。 add函数接受一个整数参数n,表示要增加的天数。首先,判断n的正负,如果n大于0,则表示要增加天数,如果n小于0,则表示要减少天数。然后,使用循环将日期往前或往后推n天。在循环,我们需要判断当前日期是否是月底,如果是,则需要更新月份和年份。最后,更新日期的日份,并返回更新后的日期。 sub函数与add函数类似,接受一个整数参数n,表示要减少的天数。需要注意的是,如果n大于当前日期与1月1日之间的天数差,即n大于365(或366,如果是闰年),则需要将日期减去一年。在循环需要判断月份是否为1月,如果是,则需要将月份设置为12,并将年份减1。 以上就是设计一个日期类,实现时间的加、减操作的基本思路。在实际编写代码时,还需要考虑包括日期合法性检查、闰年判断等细节问题,以及提供其他常用的日期操作函数。 ### 回答3: 日期类的设计应该包括日期的年、月、日三个属性,可以使用int类型来表示。为了保证日期的合法性,需要在构造函数进行有效性检查,确保传入的年、月、日在合理的范围内。在设计加、减操作时,可以通过改变日期的年、月、日属性来实现。 在加法操作,可以根据要求增加指定的天数。可以通过判断当前月份的天数来确定是否需要变更月份或年份。如果加上的天数超过了当前月份的天数,需要将月份加一,并将天数减去当前月份的天数。如果加上的月份超过了12个月,需要将年份加一,并将月份减去12个月。 在减法操作,可以根据要求减去指定的天数。可以通过判断当前月份的天数以及是否跨年来确定是否需要变更月份或年份。如果减去的天数超过了当前月份的天数,需要将月份减一,并将天数加上当前月份的天数。如果减去的月份超过了12个月,需要将年份减一,并将月份加上12个月。 除了加、减操作外,还可以实现其他功能,如获取日期的字符串形式、判断两个日期的大小及比较等。 对于日期的有效性检查,需要考虑以下几个方面: 1. 年份的合法范围一般可以设定为正整数,例如从1年到9999年。 2. 月份的合法范围一般可以设定为1到12。 3. 日的合法范围需要根据月份和年份来确定,例如1月份可以是1到31日,2月份需要判断是否是闰年并检查1到28或1到29日。 通过以上的设计和实现,可以实现一个简单的日期类,满足加、减操作的需求。可以通过创建日期对象,并调用相关方法来进行操作,例如创建一个日期对象date,可以通过date.addDays(7)来增加7天,或者通过date.subtractDays(15)来减去15天。这样可以方便地实现日期的加、减操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值