package com.etc.util; import java.util.Calendar; import java.util.Scanner; public class Calendar2 { public static void main(String[] args) { // 创建扫描器 Scanner sc = new Scanner(System.in); // 输入年份 System.out.println("请输入指定年份:"); int year = sc.nextInt(); // 输入月份 System.out.println("请输入指定月份:"); int month = sc.nextInt(); // 输入天数 System.out.println("请输入指定天数:"); int day = sc.nextInt(); // 在控制台输出周期数 System.out.println("日 一 二 三 四 五 六"); // 创建日历Calendar变量对象 Calendar cal = Calendar.getInstance(); // 给Calendar对象设置年月日 cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1); // cal.set(Calendar.DATE,day); // 将天数设置为第一天 cal.set(Calendar.DATE, 1); // 指定月的第一天是星期几 int i = cal.get(Calendar.DAY_OF_WEEK); int weekday = 0;// 指定月的第一天前面有多少个空格 switch (i) { case 1: weekday = 0; break; case 2: weekday = 1; break; case 3: weekday = 2; break; case 4: weekday = 3; break; case 5: weekday = 4; break; case 6: weekday = 5; break; case 7: weekday = 6; break; } // 打印输出指定月第一天的前面几个空格 for (int j = 0; j < weekday; j++) { System.out.print(" "); } int days = 1; // 从指定月的第一天开始打印输出 for (int j = 0; j < 7 - weekday; j++) { System.out.print(days + " "); days++; } int actualMaximumDate = cal.getActualMaximum(Calendar.DATE);//获取本月的实际最大天数 cal.set(Calendar.DATE,actualMaximumDate);//设置本月的天数是当前月的实际最大天数 int week_month=cal.get(Calendar.WEEK_OF_MONTH);//返回的是当前天数是本月第几周 for(int j=0;j<week_month;j++){//指定月有多少周,就打印多少行 System.out.println();//每输出打印7天就换一行 for(int k=0;k<7;k++){//依次将周日到周六的对应的天数打印出来 if(days>actualMaximumDate){//若自动增加的天数大于实际天数,循环终止 return; } if(days==day){//若指定的天数与当前自动增加的天数一样,标识出来打印 System.out.print("*"+days+" "); }else{//若指定的天数与当前自动增加的天数不一样,正常打印 System.out.print(days+" "); } days++; } } } }