Java如何判断三年是否连续

Java如何判断三年是否连续

作者:William Gu发布时间:2026-02-14阅读时长:0 分钟阅读次数:1

用户关注问题

Q
如何用Java代码判断三年是否是连续年份?

我有三个年份数据,需要判断它们是否构成连续的三年,例如2018、2019、2020。如何在Java中实现这个功能?

A

使用排序和比较年份差判断连续性

可以先将三个年份存入一个数组或集合,使用Arrays.sort()方法对它们进行排序。排序后,判断排序后的三个年份是否满足第二年减第一年等于1,第三年减第二年也等于1。若两个差均为1,则这三个年份是连续的。示例代码:

int[] years = {year1, year2, year3};
Arrays.sort(years);
boolean isContinuous = (years[1] - years[0] == 1) && (years[2] - years[1] == 1);

Q
如何处理Java中输入的年份顺序不一时判断连续性?

用户输入的三个年份顺序可能混乱,Java程序怎样保证无论输入顺序如何,都能正确判断这三年是否连续?

A

通过对年份数组排序确保顺序正确

不论输入顺序如何,先将三个年份放入数组,然后对数组进行排序。排序之后,年份顺序固定,接着比较相邻年份的差值是否为1,这样就保证判断的准确性。排序可以使用Arrays.sort方法,代码示例:

int[] years = {y1, y2, y3};
Arrays.sort(years);
boolean continuous = (years[1] - years[0] == 1) && (years[2] - years[1] == 1);

Q
Java判断三年连续时,如何避免年份重复影响判断?

如果输入的三个年份中有重复,比如2019、2019、2020,怎么在Java中判断它们不是连续的三年?

A

利用Set去重后判断元素数量和差值

首先可以将三个年份添加到Set集合中去重。如果去重后元素数量不足3,则说明有重复年份,不能算作连续的三年。如果数量是3,则排序后判断差值是否都为1。示例代码:

Set yearSet = new HashSet<>(Arrays.asList(y1, y2, y3));
if (yearSet.size() != 3) {
// 存在重复年份,不连续
} else {
int[] arr = yearSet.stream().mapToInt(Integer::intValue).toArray();
Arrays.sort(arr);
boolean isContinuous = (arr[1] - arr[0] == 1) && (arr[2] - arr[1] == 1);
}