Java语言怎么编写一个日期统计程序,计算2023年有多少个星期一?如果不用循环去遍历,还有什么办法可以计算的呢
运行效果如图
代码如下
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class DateStatistics {
public static void main(String[] args) {
int count = countMondaysInYear(2023);
System.out.println("2023年有 " + count + " 个星期一");
}
private static int countMondaysInYear(int year) {
LocalDate firstDayOfYear = LocalDate.of(year, 1, 1);
LocalDate firstMonday = firstDayOfYear.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
int daysUntilEndOfYear = firstMonday.isAfter(firstDayOfYear)
? firstMonday.lengthOfYear() - firstMonday.getDayOfYear() + 1
: firstMonday.lengthOfYear() - firstMonday.getDayOfYear();
return daysUntilEndOfYear / 7 + 1;
}
}
2023年1月1日是星期日,然后整年一共365天,所以减去1天,再除7取整
首先你得知道,每7天会有一个星期1,而2023年是平年,有365天
2023年1月1日是周日
那么从1月2日起,每七天就会有一个星期1
而365-1=364天
367/7=52……3
余下的三天分别是:周一、周二、周三
因此答案还要加一:52+1=53
我可以使用Java编写一个日期统计程序来计算2023年有多少个星期一。以下是具体步骤:
步骤 1: 引入Java日期类库 你需要在程序中引入Java日期类库,这样才能使用日期相关的方法和功能。可以使用Java自带的java.time包。
import java.time.LocalDate;
import java.time.DayOfWeek;
步骤 2: 创建计算方法 创建一个方法来计算2023年有多少个星期一。这个方法需要迭代遍历2023年的每一天,检查每个日期是否为星期一,并计数。
public class DateCounter {
public static void main(String[] args) {
int count = countMondays(2023);
System.out.println("2023年有 " + count + " 个星期一");
}
public static int countMondays(int year) {
int count = 0;
LocalDate date = LocalDate.of(year, 1, 1); // 设置起始日期为2023年1月1日
// 迭代遍历2023年的每一天
while (date.getYear() == year) {
if (date.getDayOfWeek() == DayOfWeek.MONDAY) { // 检查日期是否为星期一
count++;
}
date = date.plusDays(1); // 日期向后递增一天
}
return count;
}
}
步骤 3: 运行程序 运行上面的代码,你将得到输出结果:2023年有 xx 个星期一。
这样就实现了使用Java编写一个日期统计程序来计算2023年有多少个星期一的功能。
除了使用循环来迭代遍历每一天,目前没有其他避免循环的方法可以实现这个计算。