惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 银翼

【MySQL】Windows下如何彻底卸载MySQL? 【MySQL】Windows下如何重置root账号密码? 【辅导】Task12 类的定义与继承练习 【辅导】Task11 如何获取文件上传错误信息 PHP开发环境配置 XAMPP更换Apahce服务端口号 《Web应用开发技术(PHP)》往届学生优秀作业 【辅导】Task19 实现用户登录 主要知识点 【辅导】Task18 更新与插入删除操作 主要知识点 【辅导】Task17 查询数据 主要知识点 【辅导】Task16 使用MySQL数据库 主要知识点 【辅导】Task15 熟悉错误与异常处理 主要知识点 【辅导】Task14 使用正则表达式 主要知识点 【辅导】Task13 使用会话管理 主要知识点(2) 【辅导】Task13 使用会话管理 主要知识点(1) 【辅导】Task12 使用类和对象 主要知识点(2) 【辅导】Task12 使用类和对象 主要知识点(1) 【辅导】Task11 熟悉PHP文件操作 主要知识点 【辅导】Task10 掌握PHP表单处理 主要知识点
【Java】Task07实验4第5题解析
银翼 · 2022-11-30 · via 博客园 - 银翼
    // TODO 1: 添加一个字段percent,用以表示百分秒
    private int percent;

按照类的封装性要求,字段一般定义为私有的

    // TODO 2: 添加一个只读属性getPercent,用以实现对内部字段percent的封装
    // 并加入相应的javadoc注释。
    /**
     * 获取我的时间的百分秒数
     * @return
     */
    public int getPercent() {
        return this.percent;
    }    

可以在字段percent上点击右键,使用右键菜单Source -> Generate Getters and Setters...来生成读属性或写属性

在该方法前输入 "//*"可自动生成Javadoc注释模板

    // TODO 3: 将下面的setTime方法修改成具有4个整型的参数:hour, minute, second, percent,
    // 分别表示需要设置的时、分、秒和百分秒。并加上相应地XML注释。
    // 后面几种版本的setTime方法及构造函数最好也能做相应地修改。
    /**
     * 设置新的时间
     * @param hour 小时,0-23
     * @param minute 分钟,0-59
     * @param second 秒,0-59
     */
    public void setTime(int hour, int minute, int second, int percent) {
        if (hour<0 || hour>23) return;
        if (minute<0 || minute>59) return;
        if (second<0 || second>59) return;
        if (percent<0 || percent>99) return;

        this.hour = hour;    
        this.minute = minute;    
        this.second = second;
        this.percent = percent;
        }

在原有3参数版setTime(int hour, int minute, int second)基础上,添加int percent参数,得到4参数版本。

同时在卫语句中加入对参数percent的合法性检查,及对字段percent的赋值。

    // TODO 4: 添加一个具有3个参数的构造函数,调用TODO 3中4参数版的setTime方法初始化时间
    public void setTime(int hour, int minute, int second) {
        setTime(hour, minute, second, 0);
    }

原3参数的setTime需要保留,通过调用4参数版本来实现。

完成4参数版的setTime方法后,构造函数中调用setTime方法可相应调整:

    public MyTime(){
        setTime(0, 0, 0, 0);
    }
    
    public MyTime(int hour) {
        setTime(hour, 0, 0, 0);
    }
    
    public MyTime(int hour, int minute) {
        setTime(hour, minute, 0, 0);
    }
    
    public MyTime(int hour, int minute, int second) {
        setTime(hour, minute, second, 0);
    }
    // TODO 5: 添加一个increasePercent方法,用于实现将百分秒数加1
    // 并添加相应地javadoc注释。
    /**
     * 百分秒加1,达到100时秒加1并将percent清零
     */
    public void increasePercent() {
        this.percent++;
        if (this.percent>=100) {
            this.percent = 0;
            increaseSecond();
        }
    }

可参数后面的increaseSeocnd方法来写

    // TODO 6: 修改该清零的方法,以实现同时将百分秒清零。
    /**
     * 将该时间清零
     */
    public void Clear()
    {
        setTime(0, 0, 0, 0);
    }

改成调用4参数版本的setTime方法清零

    // TODO 7: 下面这个ToUniversalString方法返回的时间字符串不包括百分秒
    // 请做出相应地修改,以使返回的时间字符串中包括百分秒
    /**
     * 返回当前时间的通用时间格式(24小时制)字符串
     * @return 形如07:49:28的表示当前时间的字符串
     */
    public String toUniversalString()
    {
        return String.format("%02d:%02d:%02d.%02d", hour, minute, second, percent);
    }

使用%02d格式,输出2位数字的百分秒

        // 初始化定时器,无延时,1000ms(即1秒)执行一次定时任务
        // TODO 8: 请将定时器timer设为10毫秒(1个百分秒)触发1次。
        timer = new Timer();
        long delay = 0;
        long period = 10;
        timer.scheduleAtFixedRate(task, delay, period);

本TODO任务在TimePiece类中,period以毫秒为单位,设定定时时间间隔

            public void run() {
                // TODO 9: 定时器timer设为10毫秒触发1次后。修改下面的语句,
                // 以使定时器timer每触发一次,计时器对象timePiece增加10毫秒(1个百分秒)。
                if (!pause) {    // 只在计时状态时,时间走,更新时间显示
                    time.increasePercent();
                    lblTime.setText(time.toUniversalString());
                }
            }

原调用increaseSecond方法,每秒刷新一下时间。现改成调用increasePercent方法,每0.01秒刷新1次

运行结果: