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