题目描述:
已知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 );
}
最近做了一个公众号,会发布很多实用的工具类,后面也会做一些实例,非常适合初学者。