Java实现:今天星期几

题目描述:

已知1980年1月1日是星期二,输入1980年以后的任意一个日期,打印出该日期是星期几。
输入数据确保日期合法,绝不会出现类似于2023年13月56日这样的错误日期。

输入:

一行,包括三个整数,分别代表年、月、日。

输出:

一个整数,表示星期几。
星期一至星期日分别用1、2、3、4、5、6、7表示。

样例输入 

2009 1 2

样例输出 

5

很简单,格式化存入Date对象中在调用getDay+1即可获得当前星期几

我想知道用算法怎么实现,题目分类是循环

在上边的基础 上最后加个switch循环,获取的值打印返回结果

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();//年
        int month = scanner.nextInt();//月
        int day = scanner.nextInt();//日
        int days=0,week=2;//days表示总天数,week表示星期几
        for(int i=1980;i<=year;i++){
            boolean flag =false;//flag表示该年是不是闰年
            int add = 0;

            if((i%4==0&&i%100!=0)||(i%400==0)){
                flag = true;//是闰年
            }
            if(flag){
                add = 1;//闰年多一天
            }

            if(i<year){
                days = days+365+add;
            }else{
                for(int j=1;j<month;j++){
                    if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){
                        days+=31;
                    }else if(j==4||j==6||j==9||j==11){
                        days+=30;
                    }else{//2月
                        days+=28+add;
                    }
                }
                days+=day;
            }
        }
        days = days-1;
        week = week+days%7;
        System.out.println(week);
    }
}

 

给你发两个简单的方法:

/**
     * 获得指定天数的星期
     * 
     * @param date
     *            指定的天数 格式为:yyyy-MM-dd
     * @return 返回指定天数的星期数
     */
    public static String getWeekByDate( String date )
    {
        Calendar now = Calendar.getInstance();
        if ( isLegalDate( date ) )
        {
            now.setTime( getDateFromStr( date ) );
        } else
        {
            return null;
        }
        String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        String week = weeks[now.get( Calendar.DAY_OF_WEEK ) - 1];
        return week;
    }

    /**
     * 获取当前的星期
     * 
     * @param date
     *            指定日期
     * @return 从星期日-星期六 分别是0-6
     */
    public static int getWeekByDate( Date date )
    {
        Calendar now = Calendar.getInstance();
        now.setTime( date );
        return now.get( Calendar.DAY_OF_WEEK );
    }

   最近做了一个公众号,会发布很多实用的工具类,后面也会做一些实例,非常适合初学者。