练习-Java分支结构综合练习三之根据年月日计算星期

任务描述

本关任务:根据输入的年月日,确定这一天是星期几。

提示:根据基姆拉尔森日期公式,已知年月日,可以快速的求出这一天是星期几。

基姆拉尔森日期公式如下所示:

iweek=(d+2∗m+3∗5m+1​+y+4y​−100y​+400y​) mod 7

参数说明:

  • y 为我们输入的年;

  • m 为我们输入的月;

  • d 为我们输入的日。

注意:mod为取模符号。在使用时,如果遇到一月或者二月,需要把一月和二月看成是上一年的十三月和十四月。例如,如果日期是 2004-1-10 ,则需要换算成 2003-13-10, 再代入公式进行计算。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。

import java.util.Scanner;
/**
 * 任务:根据输入的年月日,确定这一天是星期几。
 */
public class ApplicationTest {
    /**
     * 请在下面的 Begin - End 之间按照注释中给出的提示编写正确的代码
     */
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        // 声明 int 类型的变量 y 用来获取控制台输入的年
        int y = scanner.nextInt();
        // 声明 int 类型的变量 m 用来获取控制台输入的月
        int m = scanner.nextInt();
        // 声明 int 类型的变量 d 用来获取控制台输入的日
        int d = scanner.nextInt();
        /********** Begin **********/
        // 第一步,判断变量 m 的值是否是 1 或者 2。如果是,则变量 m 在原来的基础上加12,同时变量 y 在原来的基础上减1
        if (m == 1 || m == 2) {
            m += 12;
            y--;
        }
        // 第二步,使用基姆拉尔森日期公式,计算星期几
        int iWeek = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
        // 第三步,使用多路分支判断星期几。如果是星期一,则在控制台输出"星期一";如果是星期二,则在控制台输出"星期二"....以此类推,如果是星期日,就是在控制台输出"星期日"
        switch (iWeek) {
            case 0:
                System.out.print("星期一");
                break;
            case 1:
                System.out.print("星期二");
                break;
            case 2:
                System.out.print("星期三");
                break;
            case 3:
                System.out.print("星期四");
                break;
            case 4:
                System.out.print("星期五");
                break;
            case 5:
                System.out.print("星期六");
                break;
            case 6:
                System.out.print("星期日");
                break;
        }
        /********** End **********/
    }
}

Guess you like

Origin blog.csdn.net/qq_53149358/article/details/121190705