7-5 打印双休日
分数 20
全屏浏览
切换布局
作者 温彦
单位 山东科技大学
输入年份和月份,打印当月所有双休日日期,打印格式为:“2018-06-16”
输入格式:
年份和月份
输出格式:
双休日日期
输入样例:
在这里给出一组输入。例如:
2018 6
输出样例:
在这里给出相应的输出。例如:
2018-06-02
2018-06-03
2018-06-09
2018-06-10
2018-06-16
2018-06-17
2018-06-23
2018-06-24
2018-06-30
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.text.SimpleDateFormat;
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int years=scan.nextInt();
int month=scan.nextInt();
//输入我们需要求的年份和月
int days=0;
switch(month) {
case 1:case 3:case 5:case 7:case 8:case 10:case 12:{
days=31;break;
}
case 4:case 6:case 9:case 11:{
days=30;break;
}
case 2:
if((years%400==0)||(years%100!=0&&years%4==0)) {
days=29;break;
}
else {
days=28;break;
}
}
//这里判断月份并赋值给days判断这个月有多少天;
Calendar c1 = Calendar.getInstance();
//这里我们构造一个Calendar类型,方便我们后续工作,(注:如果不做任何变化,那么它将表示的是当前的日期;)
for(int i=1;i<=days;i++) {
c1.set(years, month-1, i);
//这里就是把这一年的这一个月里的每一天赋值给我们所构造的c1,可以理解为c1就已经表示这一天了,比如根据我们所输入的数据,第一个日期也就是2018-6-1;然后我们直接判断这一天是不是周末;(注:Calendar是从零开始就算月份的,因此我们需要在我们要求的月份基础上减一);
if(c1.get(c1.DAY_OF_WEEK)==1||c1.get(c1.DAY_OF_WEEK)==7) {
//这里的c1.DAY_OF_WEEK就代表这一天是星期几,利用这个方法程序会自动判断出这是星期几,值得注意的是,这里一周的开始是从周天开始的;利用get进行判断;
System.out.printf("%04d-%02d-%02d\n",years,month,i);
//这里利用printf进行格式化输出,类似于C语言的输出模式;
}
}
}
}