2301_82307990 2024-04-09 23:55 采纳率: 50%
浏览 7
已结题

JAVA中的闰年计算

1从键盘任意年份,输出显示500年内闰年数量以及前后各3个闰年年份;
2.输出显示500年内逢百的闰年年份;
3.显示完毕后继续等待用户输入字符并重复步骤1和2;
4.至少使用两种判断闰年的方法并在以上步骤中同时调用;
5.当用户输入自己的学号后4位时输出自己的姓名并结束程序运行;

  • 写回答

4条回答 默认 最新

  • shandongwill 大数据领域新星创作者 2024-04-10 08:32
    关注

    为了实现上述要求,我们首先需要定义判断闰年的方法,并编写代码来处理用户输入和显示结果。以下是一个Java程序实现:

    import java.util.Scanner;
    
    public class LeapYearChecker {
    
        // 方法一:使用 if-else 语句判断闰年
        public static boolean isLeapYearIfElse(int year) {
            if (year % 4 == 0) {
                if (year % 100 == 0) {
                    return year % 400 == 0;
                }
                return true;
            }
            return false;
        }
    
        // 方法二:使用逻辑运算符判断闰年
        public static boolean isLeapYearLogicalOperators(int year) {
            return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        }
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String studentIdLastFourDigits = "你的学号后四位"; // 替换为你的学号后四位
    
            while (true) {
                System.out.print("请输入一个年份:");
                int year = scanner.nextInt();
    
                // 找出500年内的闰年
                int startYear = year - 250;
                int endYear = year + 250;
                int leapYearCount = 0;
                int[] leapYears = new int[10]; // 存储前后各3个闰年,共6个,再加逢百的闰年,最多10个
                int leapYearIndex = 0;
    
                for (int currentYear = startYear; currentYear <= endYear; currentYear++) {
                    if (isLeapYearIfElse(currentYear) && isLeapYearLogicalOperators(currentYear)) {
                        leapYearCount++;
    
                        // 如果是逢百的闰年
                        if (currentYear % 100 == 0) {
                            System.out.println("逢百的闰年:" + currentYear);
                        }
    
                        // 存储前后各3个闰年
                        if (leapYearIndex < leapYears.length) {
                            leapYears[leapYearIndex++] = currentYear;
                        }
                    }
                }
    
                // 显示结果
                System.out.println("500年内闰年数量:" + leapYearCount);
                System.out.println("前后各3个闰年年份:");
                for (int i = 0; i < Math.min(leapYearIndex, 6); i++) {
                    System.out.println(leapYears[i]);
                }
    
                // 检查是否输入学号后四位结束程序
                System.out.print("输入学号后四位以结束程序,否则继续输入年份:");
                String input = scanner.next();
                if (input.equals(studentIdLastFourDigits)) {
                    System.out.println("你的名字是:你的姓名"); // 替换为你的姓名
                    break;
                }
            }
    
            scanner.close();
        }
    }
    

    这段代码做了以下事情:

    1. 定义了两个判断闰年的方法:isLeapYearIfElseisLeapYearLogicalOperators
    2. 在主方法中,使用 Scanner 类从键盘读取用户输入的年份。
    3. 在一个无限循环中,计算500年内的闰年数量,并找出前后各3个闰年以及逢百的闰年。
    4. 使用两种闰年判断方法,确保只有同时满足两个条件的年份才被认为是闰年。
    5. 在每次循环结束时,询问用户是否要输入学号后四位来结束程序。如果输入匹配预设的学号后四位,则输出姓名并退出程序。

    请注意,你需要将 studentIdLastFourDigits你的名字是:你的姓名 替换为你实际的学号后四位和姓名。此外,代码假设用户会按照提示正确输入年份和学号后四位,没有加入复杂的错误处理逻辑。在实际应用中,可能需要增加对输入合法性的检查。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月9日

悬赏问题

  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 Ubuntu开机显示器只显示kernel,是没操作系统(相关搜索:显卡驱动)
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 在rhel8中安装qemu-kvm时遇到“cannot initialize crypto:unable to initialize gcrypt“报错”
  • ¥15 arbotix没有/cmd_vel话题
  • ¥20 找能定制Python脚本的
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀