Java使用日期类实现打印输出各个年份的日历表
实现样式:
import java.time.LocalDate;
import java.util.Scanner;
/**
* @Author: SayHello
* @Date: 2022/10/9 14:12
* @Version: 1.0
* @Introduction:
*/
public class Exercise {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
printCalendar(2022);
while (true)
{
System.out.println("请输入你要查看日历的年份(输入-1退出):> ");
int year = scanner.nextInt();
if (year == -1)
{
break;
}
printCalendar(year);
}
}
/**
* 判断是否是闰年
* @param year
* @return 是闰年返回1 不是返回0
*/
private static int isLeap(int year){
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
return 1;
}else{
return 0;
}
}
/**
* 该方法用于输出每年的12个月的日历
* @param year
*/
private static void printCalendar(int year)
{
//定义数组存放每个月对应的天数
int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//判断是否是闰年,是闰年则二月份加1,否则不变
days[2] += isLeap(year);
//循环月份数组
for (int i = 1; i < days.length; i++) {
//格式化
LocalDate date = LocalDate.of(year, i, 1);
//得到每个月的第一天是每周的第几天
int value = date.getDayOfWeek().getValue();
//定义计数器,统计\t的个数
int count = 0;
System.out.println(year+"年"+i+"月"+" "+date.getMonth());
System.out.println("一\t二\t三\t四\t五\t六\t日");
//先输出\t
for (int j = 1; j < value; j++) {
count++;
System.out.print("\t");
}
//再输出值
for (int k = 1; k <= days[i]; k++) {
//如果已经有7个\t就换行
if (count == 7)
{
count = 0;
System.out.print("\n");
System.out.print(k+"\t");
}else {
System.out.print(k+"\t");
}
count++;
}
System.out.println();
System.out.println("--------------------------");
}
}
}