gpt4 book ai didi

java - 使用 Comparable 接口(interface)对日期进行排序

转载 作者:行者123 更新时间:2023-12-01 16:44:56 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序,通过从最早的日期到最晚的日期排序,对给定日期的顺序进行排序。

我可以按年份对日期进行排序,但是当两个日期具有相同的年份并且我需要按月份排序时,它就开始出现问题。我一直在尝试嵌套 if 语句并尝试实现 while 循环,但我似乎不太正确。我知道在我的 if 语句中,我缺少某种告诉 java 按 month < other.month 排序的语句。和day < other.day但我不太明白...

当前输入/输出:

[10/5 1999, 19/5 1999, 10/3 1999, 19/3 1999, 10/5 2000, 19/5 2000, 10/3 2000, 19/3 2000]

[10/3 1999, 10/3 2000, 19/3 1999, 10/5 1999, 10/5 2000, 19/5 1999, 19/3 2000, 19/5 2000]

class Date implements Comparable<Date> {
private int year;
private int month;
private int day;

public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}

@Override
public int compareTo(Date other) {
if(year < other.year) {
return Integer.compare(this.year, other.year);
}
if(year == other.year) {
return Integer.compare(this.month, other.month);
}
if(month == other.month) {
return Integer.compare(this.day, other.day);
}
return day;
}

public String toString() {
return day + "/" + month + " " + year;
}
}

最佳答案

多年来您都没有检查所有案例,year < other.year应该是year != other.year除此之外还有一些其他问题。你想做的是:

if years aren't same
return sort by year
else, if months aren't same
return sort by months
else
return sort by days

关于java - 使用 Comparable 接口(interface)对日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53599836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com