2301_77411117 2023-05-10 16:46 采纳率: 84.6%
浏览 252
已结题

java计算2026年的周六日

img


如图所示,计算2026年每个月1-28号,要求列出每个月是周末的日期有哪些,从而输出哪些日期是周末次数最多;最后输入其中的一个日期,找出对应是周末的日期有哪些(用几月几日输出)。

  • 写回答

10条回答 默认 最新

  • 语言-逆行者 2023-05-10 18:19
    关注
    import java.time.DayOfWeek;
    import java.time.LocalDate;
    import java.util.HashMap;
    import java.util.Map;
    
    public class one1 {
        public static void main(String[] args) {
            // 计算 2026 年的日期范围
            LocalDate startDate = LocalDate.of(2026, 1, 1);
            LocalDate endDate = LocalDate.of(2026, 12, 31);
    
            // 用 Map 记录每个日期是周末的次数
            Map<LocalDate, Integer> weekendCountMap = new HashMap<>();
            while (!startDate.isAfter(endDate)) {
                if (startDate.getDayOfMonth() >= 1 && startDate.getDayOfMonth() <= 28) { // 日期符合要求
                    if (startDate.getDayOfWeek() == DayOfWeek.SATURDAY || startDate.getDayOfWeek() == DayOfWeek.SUNDAY) {
                        // 如果是周末,则将其次数加 1
                        weekendCountMap.put(startDate, weekendCountMap.getOrDefault(startDate, 0) + 1);
                    }
                }
                // 每次循环日期加上一天
                startDate = startDate.plusDays(1);
            }
    
    
            int maxWeekendCount = 0;  // 记录周末数量最多的次数
            LocalDate maxWeekendDate = null;  // 记录周末数量最多的日期
            Map<Integer, Integer> dayWeekendCountMap = new HashMap<>();  // 记录每天是周末的次数
    
            // 遍历所有记录的日期
            for (Map.Entry<LocalDate, Integer> entry : weekendCountMap.entrySet()) {
                LocalDate date = entry.getKey();
                int weekendCount = entry.getValue();
    
                // 统计每天是周末的次数
                int dayOfWeekendCount = dayWeekendCountMap.getOrDefault(date.getDayOfMonth(), 0);
                dayWeekendCountMap.put(date.getDayOfMonth(), dayOfWeekendCount + weekendCount);
    
                // 统计周末数量最多的日期
                if (weekendCount > maxWeekendCount) {
                    maxWeekendCount = weekendCount;
                    maxWeekendDate = date;
                }
            }
    
    
            // 输出是周末的日期
            System.out.println("2026年中是周末的日期有:");
            for (Map.Entry<LocalDate, Integer> entry : weekendCountMap.entrySet()) {
                LocalDate date = entry.getKey();
                int weekendCount = entry.getValue();
                if (date.getDayOfMonth() >= 1 && date.getDayOfMonth() <= 28) { // 只输出符合要求的日期
                    System.out.println(date.getMonthValue() + "月" + date.getDayOfMonth() + "日 是周末 ");
                }
            }
    
            // 输出每号的周末数
    
            System.out.println("每号的周末数是:");
            for (Map.Entry<Integer, Integer> entry : dayWeekendCountMap.entrySet()) {
                int dayOfMonth = entry.getKey();
                int weekendCount = entry.getValue();
                System.out.println(dayOfMonth + "日 周末数:" + weekendCount);
            }
    
            // 统计不区分月的周末数量最多的日期
            int maxDayWeekendCount = 0;
            int maxDayOfWeekend = 0;
            for (Map.Entry<Integer, Integer> entry : dayWeekendCountMap.entrySet()) {
                int dayOfWeekendCount = entry.getValue();
                if (dayOfWeekendCount > maxDayWeekendCount) {
                    maxDayWeekendCount = dayOfWeekendCount;
                    maxDayOfWeekend = entry.getKey();
                }
            }
    
            // 输出日期中周末数量最多的日期
    
            System.out.println("日期中周末数量最多的是:" + maxDayOfWeekend + "日,数量为:" + maxDayWeekendCount);
    
            // 这里重复上面的一部分代码,为了找出maxDayOfWeekend对应的月份,减少上面的复杂储存
            System.out.println("对应的月份是:");
            for (Map.Entry<LocalDate, Integer> entry : weekendCountMap.entrySet()) {
                LocalDate date = entry.getKey();
                int weekendCount = entry.getValue();
                if (date.getDayOfMonth() >= 1 && date.getDayOfMonth() <= 28) { // 只输出符合要求的日期
                    if(date.getDayOfMonth()==maxDayOfWeekend) {
                        System.out.print(date.getMonthValue() + "月");
                    }
                }
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 请回答用户的提问 5月10日
  • 修改了问题 5月10日
  • 展开全部