面向对象程序设计第二周编程题——有秒计时的数字钟

这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。
我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数:

public Clock(int hour, int minute, int second);
用hour, minute和second初始化时间。
public void tick();
“嘀嗒”一下,时间走1秒。
public String toString();
返回一个String的值,以“hh:mm:ss“的形式表示当前时间。这里每个数值都占据两位,不足两位时补0。如“00:01:22”。注意其中的冒号是西文的,不是中文的。

package clockfianal;  //有秒计时的时钟(面向对象程序设计第二周编程题)

import java.util.Scanner;

public class Clockfinal 
{
    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
        clock.tick();
        System.out.println(clock);
        in.close();
    }
}

    class Display
    {
        private int limit=0; 
        private int value=0;
        public Display(int limit)
        {this.limit=limit;}

        public void setvalue(int value)
        {this.value=value;}

        public void increase() {     //类的increase方法
            value++;
            if(value==limit) 
            {
                value=0;
            }
        }
        public  int getValue() 
        {return value;}
    }

    class Clock
    {   Display hour =new Display(24);
        Display minute =new Display(60);
        Display second =new Display(60);

        public Clock(int hour,int minute,int second)
        {this.hour.setvalue(hour); //这里很容易出错,second.setValue(second)这种写法是错误的
        this.minute.setvalue(minute);
        this.second.setvalue(second);
        }

        public  void tick()
        {
            while(true)//无限循环
            {   second.increase();
                if(second.getValue()==0)
                {minute.increase();  //调用increase方法
                if(minute.getValue()==0) 
                {
                    //因为hour和minute定义的是private类,所以
                    //不能hour.value 要写个getValue
                    hour.increase();
                }}
                System.out.println(toString());
//              System.out.printf("%02d:%02d:%02d\n",hour.getValue(),minute.getValue(),second.getValue());
            }

        }
        public String toString()
        {
                String time=String.format("%02d:%02d:%02d",hour.getValue(),minute.getValue(),second.getValue());
                //%02d输出两位整数,不足两位的前面加0
                return time;
        }
    }
相比老师上课讲的,就相当于多一个Clock类里面second对象。能设置时间通过setValue方法定义此时的时间。

在我编程的时候,不小心把一个类写在了另一个类的大括号里,有的时候会报错,可以在类的名字前加static。现在个人理解,最好每个类单独写。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值