有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

日历Java程序:如何压缩此代码?

我正在开发一种方法,它返回一个整数,该整数对应于一年中第一天的一周中的一天。Int 0是星期天,1是星期一,2是星期二,3是星期三。。。星期六。方法标题如下:

private static int firstDayOfYear (int year) 
{
}

我的起点是2020年,第一天是2020年1月1日的星期三。因此,2019年将于周二开始,2018年将于周一开始。2021将在星期四开始,2022将在星期五开始。p>

目前,我已经在方法内部创建了这段代码。它是有效的,但感觉很笨重,我觉得有一个非常有效的方法来解决这个问题。现在,我的代码计算从星期三到星期三的距离,并用它来定位一周中的哪一天:

int difference = year - 2020;
int distance = difference % 7;

if (distance == -6)
return 4;
if (distance == -5)
return 5;
if (distance == -4)
return 6;
if (distance == -3)
return 0;
if (distance == -2)
return 1;
if (distance == -1)
return 2;
if (distance == 0)
return 3;
if (distance == 1)
return 4;
if (distance == 2)
return 5;
if (distance == 3)
return 6;
if (distance == 4)
return 0;
if (distance == 5)
return 1;
else
return 2;

如果您对如何简化或浓缩此代码有任何建议,我将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    不要重新发明轮子。使用JDK的java.time包类

    return LocalDate.of(year, 1, 1).getDayOfWeek().getValue() % 7
    

    这不仅更加简洁易懂。这也更正确,因为您的代码没有正确处理闰年

    与使用基于数字的非标准、模糊约定不同,我会坚持使用DayOfWeek枚举,不过:

    return LocalDate.of(year, 1, 1).getDayOfWeek()