Java抽象类与接口 实现以下功能:输入某个年份,利用Calendar类实现判断这一年是不是闰年。用除以4或400判断
时间: 2024-02-13 11:03:07 浏览: 64
好的,以下是Java代码实现:
```
import java.util.Calendar;
public class LeapYearChecker {
public static void main(String[] args) {
int year = 2020; // 你可以输入任何你想要的年份
if (isLeapYear(year)) {
System.out.println(year + "是闰年");
} else {
System.out.println(year + "不是闰年");
}
}
public static boolean isLeapYear(int year) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
// 如果这一年能被4整除,但不能被100整除,或者能被400整除,那么这一年就是闰年
return (calendar.getActualMaximum(Calendar.DAY_OF_YEAR) > 365);
}
}
```
在这个程序中,我们使用了Java自带的`Calendar`类来获取这一年有多少天。如果这一年有366天,那么就是闰年,否则不是。
相关问题
java 作业内容: 抽象类与接口 输入某个年份,利用Calendar类实现判断这一年是不是闰年。
好的,这是一个关于抽象类和接口的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` 方法来实现其他判断闰年的算法。
给定一个年份,判断这一年是不是闰年。 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数; 2. 年份是400的倍数。 其他的年份都不是闰年。java
解法一:
```java
public boolean isLeapYear(int year) {
if (year % 4 == 0 && year % 100 != 0) {
return true;
} else if (year % 400 == 0) {
return true;
} else {
return false;
}
}
```
解法二:
```java
public boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
```
以上两种解法都使用了逻辑运算符来合并两种情况的判断。如果年份是4的倍数而不是100的倍数或者是400的倍数,则返回true,否则返回false。
阅读全文