在java核心基础上看到这道题
- import java.text.DateFormatSymbols;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import java.util.Locale;
- /*
- * 需求:打印出当前月的日历,并且在当前天数前加上"*"号
- * 实现:1.生成一个Gregorian Calendar的实例gc
- * 2.得到当前的月份和日期
- * 3.将gc设定为本月第一天,得到它的DAY_OF_WEEK值(星期天为1,星期六为7)
- * 4.得到firstDayOfWeek,默认为1;然后do while循环,将gc对应为本月1号所在星期的星期日;
- * 5.接下来打印星期X(从星期日-星期六):用do while循环以及SimpleDateSymbols类的getShortWeekdays()方法得到的字符串数组。
- * 循环知道DAY_OF_WEEK值为firstDayOfWeek为止;
- * 6.再打印DAY_OF_MONTH,要从1号开始,所以首先要将gc重置为本月的第一天,然后运用do while循环将day打印出来;
- * 当打印到星期六时要求换行打印,在当前日期后要求加一个星号;循环退出条件为month(初始)==gc.get(Calendar.MONTH);
- */
- public class CalendarDemo
- {
- public static void main(String[] args)
- {
- //得到GregorianCalendar的实例
- GregorianCalendar gc=new GregorianCalendar();
-
- //得到当前的月份和日期:
- int month=gc.get(Calendar.MONTH);
- int today=gc.get(Calendar.DAY_OF_MONTH);
-
- /*将gc设置为本月的第一天,并且得到这一天是星期几
- * 从周日到周六DAY_OF_WEEK从1-7;
- */
- gc.set(Calendar.DAY_OF_MONTH,1);
- int weekday=gc.get(Calendar.DAY_OF_WEEK);
-
- //设置时区:
- Locale.setDefault(Locale.US);
-
- //获得当前地区星期的起始日:
- int firstDayOfWeek=gc.getFirstDayOfWeek();
-
- //将gc重置,知道gc所对应的日期是本月第一个星期的星期天;
- while(weekday!=firstDayOfWeek)
- {
- gc.add(Calendar.DAY_OF_MONTH,-1);
- weekday=gc.get(Calendar.DAY_OF_WEEK);
- }
- //输出表示星期几的头:
- String[] weekdayNames=new DateFormatSymbols().getShortWeekdays();
- do
- {
- System.out.printf("%4s",weekdayNames[weekday]);//最先打印出来的是一星期中的第一天
- gc.add(Calendar.DAY_OF_MONTH,1);//将gc所代表的日子往后推1天;
- weekday=gc.get(Calendar.DAY_OF_WEEK);
- }
- while(firstDayOfWeek!=weekday);
- System.out.println();
-
- gc.set(Calendar.DAY_OF_MONTH, 1);
- //打印出日期,从当月的1号开始打印:
- do
- {
- int day=gc.get(Calendar.DAY_OF_MONTH);
-
-
- //print day
- System.out.printf("%3d",day);
-
- //在当前日期后加星号
- if(day==today)
- System.out.print("*");
- else
- System.out.print(" ");
-
- gc.add(Calendar.DAY_OF_MONTH, 1);
- weekday=gc.get(Calendar.DAY_OF_WEEK);
- //如果打印到星期六了,那么下次打印前就得先换行
- if(weekday==firstDayOfWeek)
- System.out.println();
-
-
- }
- while(gc.get(Calendar.MONTH)==month);
- }
- }
复制代码 |
|