有秒计时的数字时钟

这篇文章是根据翁恺老师所要求完成的,具体要求可看翁恺老师慕课面向对象Java第二章的作业题。
在参考翁恺老师视频编写代码时,我发现自己还是有些死板,以及对题目有些理解错误。
作业代码:
class Display
{
private int value;//定义变化的数字
private int limit;//定义一个限制数字
public Display(int limit)
{
this.limit=limit;
}
public void setValue(int value)//这个函数是对比翁恺老师新添加的函数目 的是为了满足题目要求中的初始化函数,见Clock类的构造函数。
{
this.value=value;
}
public int getValue()//得到value的值。
{
return value;
}
public void increase()//实现加1操作,并判断是否达到上限。
{
value++;
if(value==limit)
{
value=0;
}
}
}
class Clock
{
private Display hour=new Display(24);//分别建立对象
private Display minture=new Display(60);
private Display second=new Display(60);
public Clock(int hour,int minture,int second)//初始化时间。
{
this.hour.setValue(hour);
this.minture.setValue(minture);
this.second.setValue(second);

}
public void tick()//开始走动
{
		second.increase();
		if(second.getValue()==0)
		{
			minture.increase();
			if(minture.getValue()==0)
			{
				hour.increase();
			}
		}
	}

public String toString()//返回其值。
{
	return String.format("%02d:%02d:%02d",hour.getValue(),minture.getValue(),second.getValue());
}

}
public class Main{
public static void main(String[] args) {
java.util.Scanner in = new java.util.Scanner(System.in);
Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
clock.tick();
System.out.println(clock);
in.close();
}
}
我刚开始好像对题目理解有些错误,以为要求的是像视频中那样无限循环的走动。最后看了别人的解释,才发现我的理解有些错误。
以下代码是我想的无限循环的代码,差别很小。只需改动一下Clock类中的tick函数,和main函数的一小部分。
class Display
{
private int value;
private int limit;
public Display(int limit)
{
this.limit=limit;
}
public void setValue(int value)
{
this.value=value;
}
public int getValue()
{
return value;
}
public void increase()
{
value++;
if(value==limit)
{
value=0;
}
}
}
class Clock
{
public static final String Display = null;
private Display hour=new Display(24);
private Display minture=new Display(60);
private Display second=new Display(60);
public Clock(int hour,int minture,int second)
{
this.hour.setValue(hour);
this.minture.setValue(minture);
this.second.setValue(second);

}
public void tick()
{		
	while(true){
		second.increase();
		if(second.getValue()==0)
		{
			minture.increase();
			if(minture.getValue()==0)
			{
				hour.increase();
			}
		}
		System.out.printf("%02d:%02d:%02d\n",hour.getValue(),minture.getValue(),second.getValue());
	}
}

/*public String toString()
{
	return String.format("%02d:%02d:%02d",hour.getValue(),minture.getValue(),second.getValue());
}*/

}
public class Main{
public static void main(String[] args) {
java.util.Scanner in = new java.util.Scanner(System.in);
Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
clock.tick();
//System.out.println(clock);
in.close();
}
}
这部分是我在理解题目错误时的一些代码,大家也可以不用看,是我在编写时的一些错误。打算记录下来询问一下老师。在我编写类Clock中分别new了三个对象
private int hour1;
private int minture1;
private int second1;
private Display hour=new Display(hour1);
private Display minture=new Display(minture1);
private Display second=new Display(second1);
打算根据构造函数将其初始化(当时我的理解是将limit初始化,也就是上限初始化,及运行时分别输入24 ,6 0,60)
public Clock(int hour1,int minture1,int second1)
{
this.hour1=hour1;
this.minture1=minture1;
this.second1=second1;
}
余下代码基本没变,但最后运行结果时发现出现了00:00:以及很大的数字(也就是秒这一区域,一直累加,并不发生minture与hour的运算)。
感觉差一点就能想明白是为啥了,结果差好多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值