| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 383 人关注过本帖
标题:这个打印日历的程序我觉得特别难理解。。
只看楼主 加入收藏
nikobelic
Rank: 2
等 级:论坛游民
帖 子:37
专家分:30
注 册:2012-5-26
结帖率:25%
收藏
 问题点数:0 回复次数:0 
这个打印日历的程序我觉得特别难理解。。
import java.text.DateFormatSymbols;
import java.util.*;
class CalendarTest
{
    public static void main(String[] args)
    {
        //Locale.setDefault(Locale.CHINA);
        GregorianCalendar d = new GregorianCalendar();//创建当前日期

        int today = d.get(Calendar.DAY_OF_MONTH); //当前日
        int month = d.get(Calendar.MONTH);
        //System.out.println(today + "  " + month);
        d.set(Calendar.DAY_OF_MONTH,1); //将d设置为月初
        int weekday = d.get(Calendar.DAY_OF_WEEK);//该周的第几天
        //System.out.println(weekday);//月初是第二个元素 周一
        int firstDayOfWeek = d.getFirstDayOfWeek();//获得本地的周的起始 第一个元素 周日
        //System.out.println(firstDayOfWeek);
        int indent = 0;//缩排
        while(weekday != firstDayOfWeek)//2 != 1
        {
            indent++;
            d.add(Calendar.DAY_OF_MONTH,-1);
            weekday = d.get(Calendar.DAY_OF_WEEK);//1
        }
        //d目前在周日的位置
        String[] weekdayNames =  new DateFormatSymbols().getShortWeekdays();
        //System.out.println(weekday);
        //打印表头
        do
        {
            System.out.printf("%4s",weekdayNames[weekday]);
            d.add(Calendar.DAY_OF_MONTH,1);
            weekday = d.get(Calendar.DAY_OF_WEEK);
        }
        while (weekday != firstDayOfWeek);//
        System.out.println();
        //打印月初之前的空格
        for (int i = 1 ; i <= indent ; i++ )
        {
            System.out.printf("      ");
        }
        d.set(Calendar.DAY_OF_MONTH,1);//?
        do
        {
            //打印日
            int day = d.get(Calendar.DAY_OF_MONTH);
            System.out.printf("%6d",day);
            //标记当前日
            if(day == today)
            {
                System.out.printf("*");
            }
            else
            {
                System.out.printf(" ");
            }

            d.add(Calendar.DAY_OF_MONTH,1);
            weekday = d.get(Calendar.DAY_OF_WEEK);
            if(weekday == firstDayOfWeek)
                System.out.println();
        }
        while (d.get(Calendar.MONTH) == month);
    }

}
搜索更多相关主题的帖子: import public 打印 
2012-10-22 16:22
快速回复:这个打印日历的程序我觉得特别难理解。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011247 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved