我正在尝试编写一个简单的程序,通过从最早的日期到最晚的日期排序,对给定日期的顺序进行排序。
我可以按年份对日期进行排序,但是当两个日期具有相同的年份并且我需要按月份排序时,它就开始出现问题。我一直在尝试嵌套 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/