JAVA练习:自定义MyTime的类

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

定义名为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) 

分别对时、分、秒进行加减运算。

源码:Timer.java

class MyTime {
    private int hour;
    private int minute;
    private int second;

    public MyTime() {
    }

    // 有参构造函数需要对传入的参数进行判断,时间数据的范围
    public MyTime(int hour) {
        if (hour < 0 || hour >= 24) {
            return;
        }
        this.hour = hour;
    }

    public MyTime(int hour, int minute) {
        this(hour);
        if (minute < 0 || minute >= 60) {
            return;
        }
        this.minute = minute;
    }

    public MyTime(int hour, int minute, int second) {
        this(hour, minute);
        if (second < 0 || second >= 60) {
            return;
        }
        this.second = second;
    }

    // 在原来的时间上加上n秒之后的时间,注意下面的逻辑
    public void addSecond(int sec) {
        int addHour = sec / 3600;
        int addMinute = sec % 3600 / 60;
        int addSecond = sec % 60;

        second += addSecond;
        if (second >= 60) {
            second -= 60;
            minute++;
        }
        minute += addMinute;
        if (minute >= 60) {
            minute -= 60;
            hour++;
        }
        hour += addHour;
        if (hour >= 24) {
            hour -= 24;
        }

    }

    public void addMinute(int min) {
        addSecond(min * 60);
    }

    public void addHour(int hou) {
        addSecond(hou * 3600);
    }

    public void subSecond(int sec) {
        int subHour = sec / 3600;
        int subMinute = sec % 3600 / 60;
        int subSecond = sec % 60;

        second -= subSecond;
        if (second < 0) {
            second += 60;
            minute--;
        }
        minute -= subMinute;
        if (minute < 0) {
            minute += 60;
            hour--;
        }
        hour -= subHour;
        if (hour < 0) {
            hour += 24;
        }
    }

    public void subMinute(int min) {
        subSecond(min * 60);
    }

    public void subHour(int hou) {
        subSecond(hou * 3600);
    }

    public void diaplay() {
        System.out.println(hour + ":" + minute + ":" + second);
    }

}

public class Timer {
    // 自定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)
    public static void main(String[] args) {
        MyTime mt1 = new MyTime(13, 14, 50);
        mt1.diaplay();
        // mt1.addHour(2);
        // mt1.subHour(3);
        mt1.subMinute(60);
        mt1.subSecond(3601);
        // mt1.addMinute(29);
        // mt1.addSecond(20);
        mt1.diaplay();
    }
}

源码简单,逻辑部分思考下。

  • 8
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漠诽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值