在这次的程序填空题中,我们需要完成一个名为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类中类包含三个成员变量hour、minute和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 类
- getHour 方法
- 空(1):
return hour;- 解析:
getHour方法用于返回小时数,因此直接返回成员变量hour。
- 解析:
- 空(1):
- setHour 方法
- 空(2):
|| hour >= 24;或其他等价表达式(如|| hour > 23;等)- 解析:小时数应该在0到23之间,因此当小时数小于0或大于等于24时,应抛出异常。这里使用了逻辑或
||来连接两个条件。
- 解析:小时数应该在0到23之间,因此当小时数小于0或大于等于24时,应抛出异常。这里使用了逻辑或
- 空(3):
this.hour = hour;- 解析:当输入的小时数合法时,将其赋值给成员变量
hour。this关键字用于指示当前对象。
- 解析:当输入的小时数合法时,将其赋值给成员变量
- 空(2):
- getMinute 方法
- 空(4):
return minute;- 解析:
getMinute方法用于返回分钟数,因此直接返回成员变量minute。
- 解析:
- 空(4):
- setMinute 方法
- 空(5):
this.minute = minute;- 解析:当输入的分钟数合法时(0到59之间),将其赋值给成员变量
minute。
- 解析:当输入的分钟数合法时(0到59之间),将其赋值给成员变量
- 空(5):
- getSecond 方法
- 空(6):
return second;- 解析:
getSecond方法用于返回秒数,因此直接返回成员变量second。
- 解析:
- 空(6):
- setSecond 方法
- 空(7):
this.second = second;- 解析:当输入的秒数合法时(0到59之间),将其赋值给成员变量
second。
- 解析:当输入的秒数合法时(0到59之间),将其赋值给成员变量
- 空(7):
- 构造方法
- 空(8):
Timer- 解析:构造方法的名称必须与类名相同,因此填写
Timer。
- 解析:构造方法的名称必须与类名相同,因此填写
- 空(8):
- timePeriod 方法
- 空(9):
public int- 解析:
timePeriod方法用于计算时间间隔,并返回一个整数(秒数)。因此,方法声明应该包括返回类型int和访问修饰符public。
- 解析:
- 空(9):
Program 类
main 方法
空(10):time1.getHour(), time1.getMinute(), time1.getSecond()
解析:使用printf方法格式化输出时间时,需要传入小时、分钟和秒的值。这些值通过调用time1对象的getHour、getMinute和getSecond方法获得。
空(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类的成员变量访问、方法定义、异常处理以及格式化输出等基本概念和语法规则。
1174

被折叠的 条评论
为什么被折叠?



