/**
* 在程序中经常对时间进行操作但是没有时间类型的数据,那么我们可以自己实现一个时间类来满足程序中的需要。
* 定义名为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;
}
}