java练习(面向对象)

题目

在程序中经常要对时间进行操作但是并没有时间类型的数据。
那么我们可以自己实现一个时间类来满足程序中的需要。 
定义名为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) 
分别对时、分、秒进行加减运算。

分析

对时间进行加减时,加法运算时,要考虑每满60秒,对应的分加1。满60分,对应的时要加1.减法运算则反之。


 

/*
在程序中经常要对时间进行操作但是并没有时间类型的数据。
那么我们可以自己实现一个时间类来满足程序中的需要。 
定义名为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) 
分别对时、分、秒进行加减运算。
*/
public class Day1601 
{
	public static void main(String[] args) 
	{
		MyTime m = new MyTime(14,58,42);
		m.display();

		m.addSecond(58);
		m.addMinute(43);
		m.addHour(20);
		m.display();

		m.subSecond(58);
		m.subMinute(43);
		m.subHour(20);
		m.display();
		
		System.out.println("Hello World!");
	}
}

class MyTime
{
	//私有化、封装
	private int hou;
	private int min;
	private int sec;
	public MyTime(){
		this(0,0,0);
	}
	public MyTime(int hou,int min,int sec){
		this.hou = hou;
		this.min = min;
		this.sec = sec;

	}

	public void setHou(int hou){
		this.hou = hou;
	}
	public int getHou(){
		return hou;
	}

	public void setMin(int min){
		this.min = min;
	}
	public int getMin(){
		return min;
	}

	public void setSec(int sec){
		this.sec = sec;
	}
	public int getSec(){
		return sec;
	}

	public void display(){
		System.out.println(getHou()+"时"+getMin()+"分"+getSec()+"秒");
	}

	public void addSecond(int sec){
		if ((getSec()+sec) > 60)
		{
			setSec(getSec()+sec-60);
			setMin(getMin()+1);//超过60秒进1分钟
		}else{
		setSec(getSec()+sec);
		}
	}
	
	public void addMinute(int min) {
		if ((getMin()+min)>60)
		{
			setMin(getMin()+min-60);//超过60分进1小时
			setHou(getHou()+1);
		}else{
		setMin(getMin()+min);
		}
	}

	public void addHour(int hou){
		if ((getHou()+hou)>24)
		{
			setHou(getHou()+hou-24);
			System.out.println("+1天");//超过24小时,则+1天
		}else{
		setHou(getHou()+hou);
		}
	}
	
	public void subSecond(int sec){
		if ((getSec()-sec)<0)
		{
			setSec(getSec()+60-sec);
			setMin(getMin()-1);
		}else{
		setSec(getSec()-sec);
		}
	}
	
	public void subMinute(int min) {
		if ((getMin()-min)<0)
		{
			setMin(getMin()+60-min);
			setHou(getHou()-1);
		}else{
		setMin(getMin()-min);
		}
	}

	public void subHour(int hou) {
		if ((getHou()-hou)<0)
		{
			setHou(getHou()+24-hou);
			System.out.println("-1天");

		}else{
		setHou(getHou()-hou);
		}
	}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何必,去在意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值