使用Java实现万年历。
代码如下:
package com.oraleoaec.test;
import java.util.Calendar;
import java.util.Scanner;
public class TestDate {
private static int year; // 定义年份
public static void main(String[] args) {
int month; // 定义月份
int dayNumber = 0;//该月的天数
String[] days = new String[38];//定义这个月的天数(数组日历)
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份:");
year = sc.nextInt();
while (year < 1) {
System.out.print("你输入的年份有误,请重新输入:");
year = sc.nextInt();
}
System.out.print("请输入月份:");
month = sc.nextInt();
while (month < 1 || month > 12) {
System.out.print("你输入的月份有误,请重新输入:");
month = sc.nextInt();
}
dayNumber = dayNumber(month);
if(isLeapYear(year)){
System.out.println(year+"年为闰年,这个月有:"+dayNumber+"天!");
}else{
System.out.println(year+"年为平年,这个月有:"+dayNumber+"天!");
}
// 输出表头
System.out.println("---------------------" + year + "年" + month + "月" + "---------------------");
System.out.println();
System.out.println("日\t一\t二\t三\t四\t五\t六");
//设置时间
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1,1);
//初始化日历数组
for(int i = 0; i < days.length; i++){
days[i] = " ";
}
//赋值
int j = 1;
for(int i = calendar.get(Calendar.DAY_OF_WEEK)-1; i < days.length; i++,j++){
if(j <= dayNumber){
days[i] += j;
}
}
//输出日历数组,遇七换行
for(int i = 0; i < days.length; i++){
if(i%7==0){
System.out.println();
}
System.out.print(days[i]+"\t");
}
}
//计算天数
public static int dayNumber(int month){
int dayNumber = 0;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayNumber = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayNumber = 30;
break;
case 2:
if(isLeapYear(year)){
dayNumber = 29;
}else{
dayNumber = 28;
}
break;
default:
System.out.println("你输入的月份有误!");
}
return dayNumber;
}
// 判断闰年
public static boolean isLeapYear(int year) {
if (year % 100 == 0) {
if (year % 400 == 0) {
return true;
}
} else {
if (year % 4 == 0) {
return true;
}
}
return false;
}
}
运行结果如图所示: