输入年、月、日,计算其为星期几

本文介绍了一个使用Java编写的程序,该程序能够根据输入的年、月、日计算出对应的星期。通过一系列数学公式和条件判断,程序准确地返回了一周中的具体某一天,例如星期六或星期天等。
/*
Enter year:(e.g., 2012): 2015
Enter month: 1-12: 1
Enter the day of the month: 1-31: 25
Day of the week is Sunday.

Enter year:(e.g., 2012): 2012
Enter month: 1-12: 5
Enter the day of the month: 1-31: 12
Day of the week is Saturday.

*/
import java.util.Scanner;

public class DayOfTheWeek {
    public static void main (String[] args) {
        Scanner input = new Scanner(System.in);
        int h, q, m, j, k;
        /******************************************************
         * h: is the day of the week.
         * q: is the day of month.
         * m: is the month.
         * j: is the century.
         * k: is the year of the century.
         ******************************************************/
        System.out.print("Enter year:(e.g., 2012): ");
        j = input.nextInt();        
        System.out.print("Enter month: 1-12: ");
        m = input.nextInt();
        if (m == 1 || m == 2) {
            if (m == 1) 
                m = 13;
            else
                m = 14;
            k = (j - 1) % 100;
            j /= 100;
        }
        else {
            k = j % 100;
            j /= 100;
        }   
        System.out.print("Enter the day of the month: 1-31: ");
        q = input.nextInt();
        h = (q + 26 * (m + 1) / 10 + k + k / 4 + j / 4 + 5 * j) % 7;

        System.out.print("Day of the week is ");
        switch (h) {
            case 0: System.out.println("Saturday.");  break;
            case 1: System.out.println("Sunday.");  break;
            case 2: System.out.println("Monday.");  break;
            case 3: System.out.println("Tuesday."); break;
            case 4: System.out.println("Wednesday.");   break;
            case 5: System.out.println("Thursday.");    break;
            case 6: System.out.println("Friday.");  break;
        }
    }
}
Java计算给定日期星期,通常会使用`java.util.Calendar`类或者`java.time`包中的`LocalDate`类。这里,我将介绍如何使用`LocalDate`类来实现这一功能,因为它是Java 8中引入的,比`Calendar`类有更清晰的API设计和更好的时间日期处理能力。 首先,你需要从用户那里获取输入年月日,然后使用`LocalDate`类将字符串解析为日期对象。之后,使用该日期对象的`getDayOfWeek()`方法获取`DayOfWeek`枚举,它会返回一个星期的某一天。下面是具体的实现步骤: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.DayOfWeek; public class DateToDayOfWeek { public static void main(String[] args) { // 假设用户输入日期为 "2023-04-10",格式为 "--" String input = "2023-04-10"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 将字符串解析为LocalDate对象 LocalDate date = LocalDate.parse(input, formatter); // 获取对应的星期 DayOfWeek dayOfWeek = date.getDayOfWeek(); // 输出结果 System.out.println("给定的日期星期" + dayOfWeek); } } ``` 在这个例子中,我们首先定义了一个日期格式化器`DateTimeFormatter`,以确保可以正确解析用户输入的字符串。然后,使用`LocalDate.parse()`方法将字符串转换为`LocalDate`对象。接着,我们调用`getDayOfWeek()`方法来获取对应的星期,该方法返回的是一个`DayOfWeek`枚举值,表示星期
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值