Java基础-练习:日历打印

//业务思想最重要,知道自己想要完成什么样的业务,才能逐步的完成业务功能
public class CalendarTest {
  //打印当月的日历,掌握这个知识点后,可以很方便的制作一年的年历
  public static void main(String[] args) {
    //第一步:打印头部信息
    System.out.printf("今天的日期是:%tF %<tA,当前月份的日历如下:\n", new Date());
    System.out.println("------------------------------------------------------");
    System.out.println(" 日\t 一\t 二\t 三\t 四\t 五\t 六");
    System.out.println("------------------------------------------------------");
    //第二步:初始化一些信息
    //生成一个日历对象
    Calendar dt = new GregorianCalendar();
    int month = dt.get(Calendar.MONTH);//获取当月时间
    dt.set(Calendar.DAY_OF_MONTH, 1);//定位到当月的第一天
    int weekday = dt.get(Calendar.DAY_OF_WEEK);//当月第一天对应的星期数
    //第三步:打印第一行里和星期对应的空格
    for (int space = Calendar.SUNDAY; space < weekday; space++) {
      System.out.print("\t");
    }
    //第四步:读取当月的每一天并打印
    int m = dt.get(Calendar.MONTH);
    //上面已经把日子定位到1号了;一直打印完本月所有天数,循环结束
    for (dt.get(Calendar.DAY_OF_MONTH); m == month;) {
      System.out.printf("%2d\t", dt.get(Calendar.DAY_OF_MONTH));
      dt.add(Calendar.DAY_OF_MONTH, 1);//完成一次打印后,日子加一;
      if (Calendar.SATURDAY == dt.get(Calendar.DAY_OF_WEEK)) {//遇到星期六
        System.out.println();//换行打印
      }
      m = dt.get(Calendar.MONTH);//是否进入下一个月
    }
  }
}

 

======================下面是打印任一年的代码======================

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
 * 2016-5-8上午10:40:00
 * 
 */
//业务思想最重要,知道自己想要完成什么样的业务,才能逐步的完成业务功能
public class CalendarTest {
    public static void main(String[] args) {
        System.out.println("请输入任意年份,将自动生成年历");
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        Calendar dt = new GregorianCalendar();
        dt.set(Calendar.YEAR, year);
        dt.set(Calendar.MONTH, 0);
        dt.set(Calendar.DAY_OF_MONTH, 1);
        for (int i = 0; i < 12; i++) {
            System.out.println();
            System.out.println("---------------------------------------------------");
            System.out.printf("\t\t\t%4d年%2d月\n", year, i + 1);
            System.out.println(" 日\t 一\t 二\t 三\t 四\t 五\t 六");
            for (int space = 1; space < dt.get(Calendar.DAY_OF_WEEK); space++) {//打印空格
                System.out.print("\t");
            }
            while (dt.get(Calendar.MONTH) == i) {
                System.out.printf("%2d\t", dt.get(Calendar.DAY_OF_MONTH));
                if (dt.get(Calendar.DAY_OF_WEEK) == 7) {//遇到星期六
                    System.out.println();//换行打印
                }
                dt.add(Calendar.DAY_OF_MONTH, 1);//完成打印后,日子加一;
            }
        }
    }
}

 

 

===================下面是求当天是当年中的第几天的代码===================

==============只做练习,其实可以直接用calendar.dayofyear获取================

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * 2016-5-8上午09:54:06
 * 
 */

public class DayOfYear {

    public static void main(String[] args) {
        int i = 0;//存放天数
        Calendar gc = new GregorianCalendar();//获取日历
        System.out.println(gc.get(Calendar.DAY_OF_YEAR));//直接获取答案
        int month = gc.get(Calendar.MONTH);//今天所在月份
        int day = gc.get(Calendar.DAY_OF_MONTH);//今天是几号
        gc.set(Calendar.MONTH, 0);//将日历调整为1月份,日历中用0表示
        gc.set(Calendar.DAY_OF_MONTH, 1);//将日历中的日子调整为1号
        while (gc.get(Calendar.MONTH) < month) {//本月前的日子数
            i++;
            gc.add(Calendar.DAY_OF_MONTH, 1);
        }
        System.out.println(i + day);//通过计算得到的答案
    }

}

 

posted @ 2016-05-06 16:48  已注销账户  阅读(212)  评论(0编辑  收藏  举报