java 作业内容: 抽象类与接口 输入某个年份,利用Calendar类实现判断这一年是不是闰年。
时间: 2024-02-13 14:00:04 浏览: 83
好的,这是一个关于抽象类和接口的Java作业题目,主要考察学生对于Java基础知识的掌握程度和编程能力。以下是一个可能的实现方法:
首先,需要定义一个接口 `LeapYearChecker`,包含一个方法 `isLeapYear(int year)`,用于判断给定的年份是否为闰年。接口定义如下:
```java
public interface LeapYearChecker {
boolean isLeapYear(int year);
}
```
接着,定义一个抽象类 `AbstractLeapYearChecker`,实现 `LeapYearChecker` 接口中的 `isLeapYear` 方法,并提供一个 `check` 方法,用于在控制台中输出判断结果。抽象类定义如下:
```java
import java.util.Calendar;
public abstract class AbstractLeapYearChecker implements LeapYearChecker {
@Override
public boolean isLeapYear(int year) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
return calendar.getActualMaximum(Calendar.DAY_OF_YEAR) > 365;
}
public void check(int year) {
System.out.printf("%d is%s a leap year.\n", year, isLeapYear(year) ? "" : " not");
}
}
```
最后,定义一个 `Main` 类,用于读取用户输入的年份,并调用 `AbstractLeapYearChecker.check` 方法进行判断。`Main` 类定义如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Please input a year: ");
int year = scanner.nextInt();
scanner.close();
AbstractLeapYearChecker checker = new AbstractLeapYearChecker() {};
checker.check(year);
}
}
```
这样,用户输入一个年份后,程序会输出该年份是否为闰年。可以通过继承 `AbstractLeapYearChecker` 类,自定义实现 `isLeapYear` 方法来实现其他判断闰年的算法。
阅读全文