定义一个birthday类,包括年、月、日三个成员变量。默认创建一个“2000-01-01”的对象,否则按照提供的日期字符串创建对象。birthday类中定义一个排序成员方法public boolean sort(Birthday birthnew),可以实现按年龄排序的操作。输入n(n<10)个人的生日信息,按照年龄大小排序输出。
时间: 2024-02-05 15:12:02 浏览: 195
以下是一个可能的实现:
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Birthday implements Comparable<Birthday> {
private int year;
private int month;
private int day;
public Birthday() {
this(2000, 1, 1);
}
public Birthday(String dateString) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(dateString, formatter);
this.year = date.getYear();
this.month = date.getMonthValue();
this.day = date.getDayOfMonth();
}
public Birthday(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public boolean sort(Birthday birthnew) {
return this.compareTo(birthnew) > 0;
}
@Override
public int compareTo(Birthday other) {
LocalDate thisDate = LocalDate.of(this.year, this.month, this.day);
LocalDate otherDate = LocalDate.of(other.year, other.month, other.day);
return thisDate.compareTo(otherDate);
}
@Override
public String toString() {
return String.format("%04d-%02d-%02d", year, month, day);
}
}
```
这里使用了Java 8中的`LocalDate`类来处理日期,以及`Comparable`接口来实现比较。`sort`方法接收另一个`Birthday`对象作为参数,如果当前对象的年龄比参数对象的年龄大,则返回`true`。`toString`方法用于将日期格式化为字符串,以便输出。
下面是一个使用示例:
```java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.nextLine(); // 读取换行符
Birthday[] birthdays = new Birthday[n];
for (int i = 0; i < n; i++) {
String dateString = scanner.nextLine();
birthdays[i] = new Birthday(dateString);
}
Arrays.sort(birthdays);
for (Birthday birthday : birthdays) {
System.out.println(birthday);
}
}
}
```
首先读入输入的人数`n`,然后逐个读取每个人的生日信息,并创建一个`Birthday`对象。接着使用`Arrays.sort`方法对数组排序,最后逐个输出排序后的结果。
阅读全文