You need to enable JavaScript to run this app. Java实现闰年判断与指定日期对应星期的控制台输出
优惠活动
大模型
产品
解决方案
定价
更多

Java实现闰年判断与指定日期对应星期的控制台输出

核心问题排查
  • 日历实例未绑定用户输入的日期:代码在初始化Calendar对象时自动获取了系统当前时间,后续操作全程没有将用户输入的年、月、日参数写入该对象,最终读取到的星期值始终为代码运行当日的星期,和用户输入的日期无关联
  • 缺少月份格式适配:用户输入的是字符串形式的月份名称(如"May"),但Calendar类要求传入的月份参数是从0开始计数的整数(1月对应0、5月对应4),没有建立字符串到整数的映射逻辑,无法完成日期写入操作
  • 输出格式与目标要求不匹配:代码中存在多余的标题打印语句,且提示语的大小写、字符串拼接规则和目标输出格式存在差异
修复实现逻辑
  • 移除多余的标题打印语句,将输入提示语的格式调整为和目标要求一致的小写开头格式
  • 预定义标准月份名称数组,数组索引与Calendar类要求的整数月份值一一对应,用于将用户输入的字符串月份转换为可被日历对象识别的整数索引
  • 待所有用户输入采集完成后,调用calendar.set(year, monthIndex, day)方法,将用户输入的完整日期信息写入日历实例,替换默认绑定的系统当前时间
  • 从写入完成的日历实例中读取Calendar.DAY_OF_WEEK字段值,匹配预定义的星期字符串数组,按要求格式拼接输出
  • 保留原有已经验证正确的闰年判断逻辑,不做冗余修改
可运行参考代码
import java.util.Scanner;
import java.util.Calendar;

public class nandyan3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 预定义标准月份映射:数组索引与Calendar的月份值一一对应(0=1月,11=12月)
        String[] monthNames = {
                "January", "February", "March", "April", "May", "June",
                "July", "August", "September", "October", "November", "December"
        };
        String[] weekDays = {
                "Sunday", "Monday", "Tuesday", "Wednesday",
                "Thursday", "Friday", "Saturday"
        };

        int day, year, monthIndex = -1;
        String inputMonth;
        boolean isLeapYear = false;
        Calendar calendar = Calendar.getInstance();

        // 采集用户输入
        System.out.print("Enter month: ");
        inputMonth = scanner.next();
        // 匹配输入的月份对应的整数索引
        for (int i = 0; i < monthNames.length; i++) {
            if (monthNames[i].equalsIgnoreCase(inputMonth)) {
                monthIndex = i;
                break;
            }
        }

        System.out.print("Enter day: ");
        day = scanner.nextInt();

        System.out.print("Enter year: ");
        year = scanner.nextInt();

        // 闰年判断逻辑
        if (year % 4 == 0) {
            if (year % 100 == 0) {
                isLeapYear = (year % 400 == 0);
            } else {
                isLeapYear = true;
            }
        } else {
            isLeapYear = false;
        }

        // 输出闰年判断结果
        if (isLeapYear) {
            System.out.println(year + " is a leap year");
        } else {
            System.out.println(year + " is not a leap year");
        }

        // 将用户输入的日期写入日历对象,读取对应星期值
        calendar.set(year, monthIndex, day);
        int weekIndex = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        System.out.println(inputMonth + " " + day + ", " + year + " is " + weekDays[weekIndex]);

        scanner.close();
    }
}
运行效果验证

输入示例参数后的输出与要求完全匹配:

Enter month: May
Enter day: 2
Enter year: 2021
2021 is not a leap year
May 2, 2021 is Sunday

内容的提问来源于stack exchange,提问作者Cole Cole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 12:36:02