package com.software.oop;
import java.util.Calendar;
import java.util.Scanner;
public final class MyCalendar2 {
private Calendar calendar; //定义一个Calendar类的属性
private int year,month;
//调用抽象类Calendar的方法
public
MyCalendar2() {
calendar = Calendar.getInstance();
}
//从键盘输入年份和月份
public void input() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
year = scanner.nextInt();
System.out.println("请输入月份(1-12):");
month = scanner.nextInt();
}
//判断是否闰年 和 月份的天数
public int Judgment() {
if (month == 2) {
if (year % 400 == 0 || (year %4 ==0 && year % 100 != 0)) {
return 29;
}
return 28;
}
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
return 31;
}
return 30;
}
//设置年份和月份
public void setTime() {
calendar.set(calendar.YEAR, year);
calendar.set(calendar.MONTH, month-1);
}
//显示,输出日历
public void show() {
int flag = 0;
System.out.println(" -----"+calendar.get(calendar.YEAR)+"年"+(calendar.get(calendar.MONTH)+1)+"月-----");
System.out.println("日\t一\t二\t三\t四\t五\t六");
//下面两排-----非常重要的地方,将每个月的第一天,定位到那一个周的第几天---也就是说,要在前面输出几个空格
calendar.set(calendar.DAY_OF_MONTH,1); //由于DAY_OF-MONTH 与 DATE 是同义词,所以此处,,可以替换为 DATE
int firstDay = calendar.get(calendar.DAY_OF_WEEK);
for (int i = 1; i < firstDay; i++) {
System.out.print("\t");
flag++;
}
for (int i = 1; i <= Judgment(); i++) {
System.out.print(i+"\t");
flag++;
if (flag % 7 == 0) {
System.out.println();
}
}
}
//判断 月份 和 年份是否符合 规范
public void use(MyCalendar2 mycalendar2) {
mycalendar2.input();
if (month >=1 && month <=12 && year >0) {
mycalendar2.Judgment();
mycalendar2.setTime();
mycalendar2.show();
}else {
System.out.println("请输入正确的年份或月份");
}
}
public static void main(String[] args) {
MyCalendar2 mycalendar2 = new MyCalendar2();
mycalendar2.use(mycalendar2);
}
}
代码图片--------------------------------------------