编写时间类代码(实现时分秒的增与减)

/**
 * 在程序中经常对时间进行操作但是没有时间类型的数据,那么我们可以自己实现一个时间类来满足程序中的需要。
 * 定义名为MyTime的类其中应有三个整形成员 时(hour)分(minute)秒(second),为了保证数据的安全性这三个成员变量应为私有。
 * 为MyTime类定义构造方法以便创建对象时初始化成员变量。在定义display()方法用于将时间信息打印出来。
 * 为MyTime类添加以下方法:
 * 加秒方法:addSecond(int sec)
 * 加分方法:addMinute(int min)
 * 加时方法:addHour(int hou)
 * 减秒方法:subSecond(int sec)
 * 减分方法:subMinute(int min)
 * 减时方法:subHour(int hou)
 * 分别对时分秒进行加减运算。
 */
//这里主要锻炼的是:set方法用来修改对象属性的值,get方法是用来获取对象属性的值。
//测试类
 class MyTimeText{
    public static void main(String[] args) {
        //用有参数构造方法创建时间对象
        MyTime myTime = new MyTime(3,21,10);
        //打印时间信息
        myTime.display();
        //增加12000秒---->200分钟---->3小时20分
        myTime.addSecond(12000);
        myTime.display();
        
        MyTime myTime1 = new MyTime();
        myTime1.display();

        MyTime myTime2 = new MyTime(100,200,30);
        myTime2.display();
    }
}
/*
程序运行结果:
        10时21分3秒
        13时41分3秒
        0时0分0秒
        0时0分0秒
*/
//MyTime类
class MyTime{
     private int second;
     private int minute;
     private int hour;
    //加秒方法
    public void addSecond(int sec){
        //获取原有时间对象的秒数
        int oldSecond = getSecond();
        //在原秒数的基础之上加上增加的秒数,得到新秒数。
        int newSecond = oldSecond + sec;
        //判断新秒数
        if (newSecond < 60) {   //如果新秒数小于60秒
            //直接修改当前对象的秒数
            setSecond(newSecond);
        }else if (newSecond == 60){ //如果新秒数等于60
            //给当前对象的分钟数加1
            this.addMinute(1);
            //并且修改秒数为0
            setSecond(0);
        }else if (newSecond > 60){  //如果新秒数大于60
            //给当前对象的分钟数增加值为(newSecond / 60)
            addMinute(newSecond / 60);
            //修改秒数为(newSecond % 60)
            setSecond(newSecond % 60);
        }
    }
    //加分方法
    public void addMinute(int min){
        //获取当前时间对象的分钟数
        int oldMinute = getMinute();
        //在原有的分钟数基础上加上新增的分钟数,得到新的分钟数
        int newMinute = oldMinute + min;

        if (newMinute < 60){    //如果新的分钟数小于60
            //修改当前时间对象的分钟数为新的分钟数
            setMinute(newMinute);
        }else if (newMinute == 60){ //如果新的分钟数等于60
            //将当前时间对象的时钟数加1
            addHour(1);
            //并修改当前时间对象的分钟数为0
            setMinute(0);
        }else if (newMinute > 60){  //如果新的分钟数大于60
            //将当前时间对象的时钟数增加(newMinute / 60)
            addHour(newMinute / 60);
            //将当前时间对象的分钟数修改为(newMinute % 60)
            setMinute(newMinute % 60);
        }
    }
    //加时方法
    public void addHour(int hou){
        //获取当前时间对象的时钟数
        int oldHour = getHour();
        //在当前时间对象的时钟数上增加新增时钟数
        int newHour = oldHour + hou;

        if (newHour < 24){  //如果新时钟数小于24
            setHour(newHour);
        }else if (newHour == 24){   //如果新时钟数等于24
            //这里应该将日期增加1天(代码略)
            //修改时钟数为0
            setHour(0);
        }else if (newHour > 24){    //如果新时钟数大于24
            //将日期增加(newHour / 24)(略)
            //修改时钟数为(newHour % 24)
            setHour(newHour % 24);

        }
    }
//    天加1,年加1等就不再写了
//    秒减、分减、时减也不再写了
//    秒减
    public void subSecond(){
        //具体实现略
    }
//    分减
    public void subMinute(){
        //具体实现略
    }
//    时减
    public void subHour(){
        //具体实现略
    }
//    打印时减方法
    public void display(){
        System.out.println(getHour() + "时" + getMinute() + "分" + getSecond() + "秒");
    }
//    无参构造方法

    public MyTime() {
        this(0,0,0);
    }

//    有参构造方法

    public MyTime(int second, int minute, int hour) {
        //如果给定的时间不正确,对时分秒赋默认值
        if (second >= 60 || second < 0 || minute >= 60 || minute < 0 || hour >= 24 || hour < 0 ){
            this.second = 0;
            this.minute = 0;
            this.hour = 0;
        }else {
            this.second = second;
            this.minute = minute;
            this.hour = hour;
        }
    }
//    set and get 方法

    public int getSecond() {
        return second;
    }

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

    public int getMinute() {
        return minute;
    }

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

    public int getHour() {
        return hour;
    }

    public void setHour(int hour) {
        this.hour = hour;
    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值