用java实现万年历小功能
思路:
万年历
//1:需要确定该年份的这个月一共有多少天
//2 : 该月份的1号是星期几
//3: 输出过程中不能有换行标识,只有输出了一周的信息才可以换行
public class Wnl {
public static void main(String[] args) {
//万年历
//1:需要确定该年份的这个月一共有多少天
//2 : 该月份的1号是星期几
//3: 输出过程中不能有换行标识,只有输出了一周的信息才可以换行
Scanner input = new Scanner(System.in);
//输入月份和年份确定该月有多少天
System.out.println("输入年份");
int year = input.nextInt();
System.out.println("输入月份");
int month = input.nextInt();
int days =0;
boolean isRright = true; //用于标识月份输入是否正确,默认正确
//使用定值判断判断月份
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if((year % 4 ==0 && year%100==0) || year%400==0)
days = 29;
else
days=28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
isRright = false; //月份输入错误
}
//如果输入的信息错误,直接退出
if(isRright== false){
System.out.println("输入月份有误");
return;
}
//确定该月的1号是星期几
//根据输入的年份和月份获取一个日期对象,利用日期对象获取该日期对象是星期几
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date= sdf.parse(year+"-"+month+"-01");
int weekday = date.getDay(); //用于获取指定日期的星期几(0周日-6周六)
//开始输出日历
System.out.println(year+"-"+month+" 的日历");
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
//输出一号之前的空格
for(int i =1;i<=weekday;i++){
System.out.print("\t");
}
//根据该月有多少天,输出日历
for(int i =1;i<=days;i++){
System.out.print(i+"\t");
//如果输出了一周的信息则换行
if((i+weekday)%7==0){
System.out.print("\n");
}
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
截图: