在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。
定义名为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();
}
}
源码简单,逻辑部分思考下。