Java练习_时间加法与时间减法

时间加法

问题描述

在程序中,经常要对时间进行操作,请定义实现一个时间类,来满足程序中的需要:

(1)定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)。

(2)为了保证数据的安全性,这三个成员变量应声明为私有。

(3)为MyTime类定义构造方法,以方便创建对象时初始化成员变量。

(4)为MyTime类添加以下三个方法,分别对时、分、秒进行加减运算。
     addSecond(int second)
     addMinute(int minute)
     addHour(int hour)
    注意时、分、秒可以大于或小于0,在进行计算时还应该注意进位。
    如当前时间12:20:40,当调用addSecond( 30)时,则时间变为:12:21:10;

(5)重写toString()方法,用于将时间信息打印出来。输出格式为:时:分:秒(12:20:40)。

测试要求如下:

(1)初始化时间为 12:20:40

(2)增加30秒之后输出时间为:12:21:10

(3)增加70分钟后输出时间为:13:31:10

(4)增加25小时后输出时间为:14:31:10

输出结果如下:

12:21:10
13:31:10
14:31:10

参考代码

public class MyTime {

    private int hour;
    private int minute;
    private int second;

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

    public void addHour(int h) {
        hour = (hour + h) % 24;
    }

    public void addMinute(int m) {
        int h = (minute + m) / 60; // 求需要加几小时
        addHour(h);
        minute = (minute + m) % 60; // 求小于60的分钟数
    }

    public void addSecond(int s) {
        int m = (second + s) / 60;
        addMinute(m);
        second = (second + s) % 60;
    }

    @Override
    public String toString() {
        return hour + ": " + minute + ": " + second;
    }
}

Test

public class Test {
    public static void main(String[] args) {
        MyTime myTime = new MyTime(12, 20, 40);

        myTime.addSecond(30);
        System.out.println(myTime);

        myTime.addMinute(70);
        System.out.println(myTime);

        myTime.addHour(25);
        System.out.println(myTime);
    }
}

12: 21: 10
13: 31: 10
14: 31: 10

时间减法

问题描述

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

(1)定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)。

(2)为了保证数据的安全性,这三个成员变量应声明为私有。

(3)为MyTime类定义构造方法,以方便创建对象时初始化成员变量。

(4)为MyTime类添加以下三个方法,分别对时、分、秒进行加减运算。
     subSecond(int second)
     subMinute(int minute)
     subHour(int hour)
     注意时、分、秒可以大于或小于0,在进行计算时还应该注意进位。
     如当前时间12:25:40,当调用subSecond(50)时,则时间变为:12:19:50;

(5)重写toString()方法,用于将时间信息打印出来。输出格式为:时:分:秒(12:20:40)

测试要求如下:
(1)初始化时间为 12:25:40

(2)减少80秒之后输出时间为:12:24:20

(3)减少70分钟后输出时间为:11:14:20

(4)减少25小时后输出时间为:10:14:20

输出结果如下:

12:24:20
11:14:20
10:14:20

参考代码

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

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

    public void subSecond(int second) {
        this.second -= second; // 减去指定秒数
        // 如果秒数小于0,向分钟借位
        while (this.second < 0) {
            this.second += 60; // 秒数加回60
            subMinute(1); // 减少1分钟
        }
    }

    public void subMinute(int minute) {
        this.minute -= minute; // 减去指定分钟数
        // 如果分钟小于0,向小时借位
        while (this.minute < 0) {
            this.minute += 60; // 分钟加回60
            subHour(1); // 减少1小时
        }
    }

    public void subHour(int hour) {
        this.hour -= hour; // 减去指定小时数
        // 如果小时小于0,从24小时制循环
        while (this.hour < 0) {
            this.hour += 24; // 小时加回24
        }
    }

    @Override
    public String toString() {
        return String.format("%02d:%02d:%02d", hour, minute, second); // 格式为 02位小时:02位分钟:02位秒
    }

}

Test

public class Test {
    public static void main(String[] args) {
        MyTime time = new MyTime(12, 25, 40); // 初始化时间为 12:25:40

        time.subSecond(80);
        System.out.println(time);

        time.subMinute(70);
        System.out.println(time);

        time.subHour(25);
        System.out.println(time);
    }
}

12:24:20
11:14:20
10:14:20

posted @ 2024-12-13 11:14  xkfx  阅读(100)  评论(0编辑  收藏  举报