public class WanNianLi {
@Test
public void test1() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("年:");
int year = sc.nextInt();
System.out.println("月:");
int month = sc.nextInt();
WanNianLi w = new WanNianLi();
w.wnl(year, month);
}
}
// @Test
// public void test() {
// //分析过程
// System.out.println("一\t二\t三\t四\t五\t六\t日");
// Calendar c = Calendar.getInstance();// 获得一个Calendar的实例,系统当前时间
// c.set(Calendar.MONTH, 8);// 设置日期
// c.set(Calendar.DATE, 1);
// System.out.println(c.get(Calendar.YEAR));
// System.out.println(c.get(Calendar.MONTH) + 1);
// System.out.println(c.get(Calendar.DATE));
// System.out.println("当月总天数:" + c.getActualMaximum(Calendar.DATE));
// System.out.println(c.get(Calendar.DAY_OF_WEEK));
//
// }
public void wnl(int year, int month) {
System.out.println("一\t二\t三\t四\t五\t六\t日");
Calendar c = Calendar.getInstance();// 既是当前时间,同时也是一个Calendar实例;
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1);
c.set(Calendar.DATE, 1);// 1日
int djt = c.get(Calendar.DAY_OF_WEEK);// 当前日期是本周第几天
int kg = djt == 1 ? 6 : djt - 2;// 空格个数
// 星期-空格数 第几天
// 1-0 2
// 2-1 3
// 3-2 4
// 7-6 1
// 空格:本月1日的星期有关
int n = 0;// 计算是否换行
for (int i = 1; i <= kg; i++) {
System.out.print("\t");
n++;
}
int zts = c.getActualMaximum(Calendar.DATE);// 本月总天数
// 数字1--?本月的总天数;换行
for (int i = 1; i <= zts; i++) {
System.out.print(i + "\t");
n++;
if (n % 7 == 0)
System.out.println();
}
}
}