类和对象程序填空题内容解析

在这次的程序填空题中,我们需要完成一个名为Timer的类,该类用于表示时间,并计算从零点时刻到当前时间的时间间隔(以秒为单位)。同时,我们还需要创建一个实例,按hh:mm:ss的格式输出时间,并计算显示对象与零点时刻的时间间隔。

一、原题展示

程序填空题:
(1)创建时间类,它包含的三个成员变量hour、minute、second,编写TimePeriod方法,用于计算零点时刻到当前时间的时间间隔(秒)。
(2)创建实例,并按6个数位hh:mm:ss(2个表示小时,2个表示分钟、2个表示秒)输出相关信息,如:03:24:33 或 14:05:45。计算并显示对象与零点时刻的时间间隔。 

public class Timer
{
    private int hour;
    private int minute;
    private int second;
    public int getHour() {
           (1)     ;
    }
    public void setHour(int hour) throws Exception {
        if (hour < 0    (2)    )
        {
            throw new Exception("输入的小时不合理");
        }
        else
        {
                (3)         ;
        }
    }
    public int getMinute() {
              (4)        ;
    }
    public void setMinute(int minute) throws Exception {
        if (minute >= 0 && minute < 60)
        {
                  (5)         ;
        }
        else
        {
            throw new Exception("输入的分钟不合理");
        }
    }
    public int getSecond() {
               (6)             ;
    }
    public void setSecond(int second) throws Exception {
        if (second < 0 || second >= 60)
        {
            throw new Exception("输入的秒不合理");
        }
        else
        {
                  (7)       ;
        }
    }
    public       (8)           (int hh,int mm,int ss) throws Exception {
        setHour(hh);
        setMinute(mm);
        setSecond(ss);
    } 
            (9)           timePeriod(){         return hour * 3600 + minute * 60 + second;
    }
}
public class Program
{
    public static void main(String[] args)
    {
        try
        {
            Timer time1 = new Timer(22, 6, 15);
            System.out.printf("%02d:%02d:%02d\n" ,     (10)   );
            System.out.println("零点时刻到当前时间的时间间隔:" +    (11)  );
        }
        catch (Exception e)
        {
            System.out.println(      (12)          );
        }
    }
}

二、题目相关知识点介绍

1. 成员变量

Timer类中类包含三个成员变量hourminute和second,它们都是私有成员变量,用于存储时间的小时、分钟和秒。

private‌:成员变量只能在类内部访问,外部无法直接访问。通常通过公共的getter和setter方法来访问私有成员变量。

2. Getter和Setter方法

我们需要为每个成员变量编写getter和setter方法。

  • Getter方法:用于返回成员变量的值。
  • Setter方法:用于设置成员变量的值,并在设置时进行合法性检查。如果输入的值不合理,则抛出异常。

在setter方法中,我们检查了小时、分钟和秒的合法性:

  • 小时应该在0到23之间。
  • 分钟和秒应该在0到59之间。
3. 构造方法

构造方法Timer(int hh, int mm, int ss)用于创建Timer对象,并初始化其小时、分钟和秒。

4. timePeriod方法

timePeriod方法用于计算从零点时刻到当前时间的时间间隔(以秒为单位)。计算公式为:hour * 3600 + minute * 60 + second

5. 主程序

在主程序Program中,我们创建了一个Timer对象,并尝试打印其时间和与零点时刻的时间间隔。如果输入的时间不合理,则捕获异常并打印异常信息。

三、正确答案 

(1) return hour

(2) ||hour>=24;||hour>23;||23<hour;||24<=hour

(3) this.hour=hour

(4) return minute

(5) this.minute=minute

(6) return second

(7) this.second=second

(8) Timer

(9) public int  

(10) time1.getHour(),time1.getMinute(),time1.getSecond()

(11) time1.timePeriod()

(12) e.getMessage();e 

 四、答案解析

在这道程序填空题中,我们需要补全一个Timer类,该类用于表示时间,并能够计算从零点时刻到当前时间的时间间隔(以秒为单位)。同时,我们还需要创建一个Timer实例,并输出其时间格式以及时间间隔。接下来,我们将逐一解析每个空为何这样填写。

Timer 类

  1. getHour 方法
    • 空(1):return hour;
      • 解析:getHour方法用于返回小时数,因此直接返回成员变量hour
  2. setHour 方法
    • 空(2):|| hour >= 24; 或其他等价表达式(如|| hour > 23;等)
      • 解析:小时数应该在0到23之间,因此当小时数小于0或大于等于24时,应抛出异常。这里使用了逻辑或||来连接两个条件。
    • 空(3):this.hour = hour;
      • 解析:当输入的小时数合法时,将其赋值给成员变量hourthis关键字用于指示当前对象。
  3. getMinute 方法
    • 空(4):return minute;
      • 解析:getMinute方法用于返回分钟数,因此直接返回成员变量minute
  4. setMinute 方法
    • 空(5):this.minute = minute;
      • 解析:当输入的分钟数合法时(0到59之间),将其赋值给成员变量minute
  5. getSecond 方法
    • 空(6):return second;
      • 解析:getSecond方法用于返回秒数,因此直接返回成员变量second
  6. setSecond 方法
    • 空(7):this.second = second;
      • 解析:当输入的秒数合法时(0到59之间),将其赋值给成员变量second
  7. 构造方法
    • 空(8):Timer
      • 解析:构造方法的名称必须与类名相同,因此填写Timer
  8. timePeriod 方法
    • 空(9):public int
      • 解析:timePeriod方法用于计算时间间隔,并返回一个整数(秒数)。因此,方法声明应该包括返回类型int和访问修饰符public

Program 类

main 方法

空(10):time1.getHour(), time1.getMinute(), time1.getSecond() 

解析:使用printf方法格式化输出时间时,需要传入小时、分钟和秒的值。这些值通过调用time1对象的getHourgetMinutegetSecond方法获得。 

 空(11):time1.timePeriod()
解析:调用time1对象的timePeriod方法来计算时间间隔,并将其值输出。

空(12):e.getMessage(); 或 e
 解析:在捕获异常时,通常希望输出异常的信息。getMessage方法用于获取异常的详细消息(如果有的话)。 

综上所述,每个空的填写都是基于Java类的成员变量访问、方法定义、异常处理以及格式化输出等基本概念和语法规则。

五、其中一种答案演示

public class Timer {
    private int hour;
    private int minute;
    private int second;

    public int getHour() {
        (1) return hour; // 返回小时数
    }

    public void setHour(int hour) throws Exception {
        if (hour < 0 || hour >= 24) // (2) 检查小时数是否在0到23之间
        {
            throw new Exception("输入的小时不合理");
        } else {
            (3) this.hour = hour; // 设置小时数
        }
    }

    public int getMinute() {
        (4) return minute; // 返回分钟数
    }

    public void setMinute(int minute) throws Exception {
        if (minute >= 0 && minute < 60) {
            (5) this.minute = minute; // 设置分钟数
        } else {
            throw new Exception("输入的分钟不合理");
        }
    }

    public int getSecond() {
        (6) return second; // 返回秒数
    }

    public void setSecond(int second) throws Exception {
        if (second < 0 || second >= 60) {
            throw new Exception("输入的秒不合理");
        } else {
            (7) this.second = second; // 设置秒数
        }
    }

    public (8) Timer(int hh, int mm, int ss) throws Exception { // 构造方法
        setHour(hh);
        setMinute(mm);
        setSecond(ss);
    }

    (9) public int timePeriod() { // 计算时间间隔的方法
        return hour * 3600 + minute * 60 + second;
    }
}

public class Program {
    public static void main(String[] args) {
        try {
            Timer time1 = new Timer(22, 6, 15);
            System.out.printf("%02d:%02d:%02d\n", (10) time1.getHour(), time1.getMinute(), time1.getSecond()); // 格式化输出时间
            System.out.println("零点时刻到当前时间的时间间隔:" + (11) time1.timePeriod()); // 输出时间间隔
        } catch (Exception e) {
            System.out.println((12) e.getMessage()); // 输出异常信息
        }
    }
}

六、总结

 综上所述,每个空的填写都是基于Java类的成员变量访问、方法定义、异常处理以及格式化输出等基本概念和语法规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值