输入年月日 输出星期几(java)

import java.util.Scanner;

public class 日期 {
    public static  void main (String[] args) {
        int year;
        int mounth;
        int day;
        boolean isflag, isflag1;
        isflag = true;
        isflag1 = true;
        char c;
        Scanner sc = new Scanner(System.in);
        while (isflag) {
            System.out.print("输入年:");
            year = sc.nextInt();
            if (year <= 0) {
                System.out.println("wrong input");
                isflag1 = false;
            }
            System.out.print("输入月:");
            mounth = sc.nextInt();
            if (mounth > 12 || mounth <= 0) {
                System.out.println("wrong input");
                isflag1 = false;
            }
            System.out.print("输入日:");
            day = sc.nextInt();
            int[] mountharrays1 = juagement(year);
            if (day > mountharrays1[mounth - 1] || day <= 0) {
                System.out.println("wrong input");
                isflag1 = false;
            }
            if (isflag1) {

                int[] mountharrays = juagement(year);
                for (int i = 0; i < mounth - 1; i++) {
                    day = day + mountharrays[i];
                }
                for (int i = 1906; i < year; i++) {
                    if (juagement_year(i)) {
                        day = day + 366;
                    } else day = day + 365;
                }
                int j;
                j = day % 7;
                String[] days = {"日", "一", "二", "三", "四", "五", "六"};
                System.out.println("今天是星期" + days[j]);
                System.out.println("outside?");
                c = sc.next().charAt(0);
                if (c == 'y') {
                    isflag = false;
                } else if (c == 'n') {
                    isflag = true;
                } else {
                    System.out.println("wrong input");
                }
            }
            isflag1=true;
        }
    }
    private static int[]  juagement(int y){
        int  [] mountharrays1={31,29,31,30,31,30,31,31,30,31,30,31};
        int  [] mountharrays2={31,28,31,30,31,30,31,31,30,31,30,31};

        if(y%4==0&&(y%100!=0||y%400==0))
        {
            return mountharrays1;
        }
        else return mountharrays2;
    }

    private  static  boolean juagement_year (int y )
    {
        if(y%4==0&&(y%100!=0||y%400==0)) {
            return true;
        }
        else return false;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java代码实现,使用了Java 8的时间API和中国节假日API。 ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 读取输入年月日 int year = 2022; int month = 1; int day = 1; // 获取当前日期 LocalDate today = LocalDate.now(); // 构造指定日期 LocalDate date = LocalDate.of(year, month, day); // 计算距离今天的天数 long daysUntil = ChronoUnit.DAYS.between(today, date); // 计算星期几 String dayOfWeek = date.getDayOfWeek().toString(); // 判断是否为公历节日 List<String> holidays = getHolidays(year); boolean isHoliday = holidays.contains(date.format(DateTimeFormatter.ofPattern("MMdd"))); // 输出结果 System.out.println("距离今天还有 " + daysUntil + " 天"); System.out.println("星期" + dayOfWeek.substring(0, 1) + dayOfWeek.substring(1).toLowerCase()); System.out.println(isHoliday ? "是公历节日" : "不是公历节日"); } /** * 获取指定年份的所有公历节日 * * @param year 年份 * @return 公历节日列表,格式为MMdd */ private static List<String> getHolidays(int year) { List<String> holidays = new ArrayList<>(); holidays.add("0101"); // 元旦 holidays.add("0501"); // 劳动节 holidays.add("1001"); // 国庆节 // 计算复活节的日期 int a = year % 19; int b = year % 4; int c = year % 7; int d = (a * 19 + 24) % 30; int e = (2 * b + 4 * c + 6 * d + 5) % 7; int dateOfEaster = 22 + d + e; if (dateOfEaster > 31) { dateOfEaster -= 31; holidays.add("04" + (dateOfEaster < 10 ? "0" + dateOfEaster : dateOfEaster)); } else { holidays.add("03" + (dateOfEaster < 10 ? "0" + dateOfEaster : dateOfEaster)); } return holidays; } } ``` 请根据实际需要修改输入年月日

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值