首页 > 编程语言 >【Java】Task07实验4第5题解析

【Java】Task07实验4第5题解析

时间:2022-11-30 10:56:01浏览次数:47  
标签:Java hour int percent setTime minute 解析 TODO Task07

    // 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次

 

运行结果:

 

标签:Java,hour,int,percent,setTime,minute,解析,TODO,Task07
From: https://www.cnblogs.com/whitewin/p/16937738.html

相关文章

  • java 生成图片验证码
    importcn.hutool.cache.CacheUtil;importcn.hutool.cache.impl.TimedCache;importcn.hutool.captcha.CaptchaUtil;importcn.hutool.captcha.CircleCaptcha;import......
  • JavaScript基础(一)
    JavaScript基础第01天1-编程语言1.1编程编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。计算机程序:就是计算机所......
  • Java猜数字游戏
     packagecn.edu.dcxy;importjava.util.Random;importjava.util.Scanner;publicclassGuessNumber{publicstaticvoidmain(String[]args){i......
  • JavaScript调用App原生代码(iOS、Android)通用解决方案
     实际场景场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来。这个场景应......
  • java Http请求工具类
    importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importlombok.extern.slf4j.Slf4j;importjavax.net.ssl.*;importjava.io.*;importj......
  • 【java异常排查】 报错原因及排查【异常 解决方法】【经验总结】
    ​ 报错一:org.apache.jasper.JasperException:/xxx/xxx/xx.jsp(line:2312,column:334)TheJSPspecificationrequiresthatanattributenameisprecededbywh......
  • IntelliJ IDEA 2022.2.3注释快捷键(java)
    注释行和代码块使用Ctrl斜杠注释掉任意一行使用相同的快捷方式取消注释注释行:将文本光标置于该行中的任意位置,然后按Ctrl斜杠。选择几行,然后使用Ctrl斜杠注释掉要......
  • JavaScript合集(流程控制语句)
    流程控制条件判断语句条件分支语句循环语句条件判断语句if语句语法: if(条件表达式){ 语句 } ------- if(a>10){alert('a比10大')......
  • [XState] Create Actor in Vanilla Javascript
     functioncountBehavior(state,event){if(event.type==="INC"){return{...state,count:state.count+1}}}functioncreateA......
  • Java常用IO流
    字节输入输出流FileInputStream字节输入流常用方法:intread(byte[]b,intoff,intlen)返回读取的长度,读取失败返回-1。最多读取len个字节,读来的数据存放在b中,从第b......