Java 万年历输出方法

1.输入年份和月份,在控制台打印出本年本月的日历

效果如下:

Java 万年历输出方法_第1张图片

2.个人觉的写Java程序前首先要理解要求,然后理清思路,最后再决定用什么方法去实现。我的思路如下:

第一,首先要输出万年历需要一个循环来打印输出这个日历表。
第二,其次需要知道某年的某月是从周即开始的。
第三,然后需要知道某年的某月是多少天。
第四,最后就是用什么方法去实现了。

如果思路清晰,方法又正好知道那就简单多了,具体代码如下:

    package com.hp.T6;

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Scanner;

/**
 * 万年历
 * 
 * @author 马凯迪
 */

public class CalendarTest {

    /**
     * 控制台循环输出万年历方法
     */
    public static void printMonth(Calendar c) {

        c.set(Calendar.DAY_OF_MONTH, 1);// 设置成一日
        System.out.printf(
                "\n\n=====================  %s  月  =====================\n",
                c.get(Calendar.MONTH) + 1);
        String[] weeks = { "日", "一", "二", "三", "四", "五", "六" };
        for (int i = 0; i < weeks.length; i++) {
            System.out.printf("%s" + (i != 6 ? "\t" : "\n"), weeks[i]);
        }

        int offday = c.get(Calendar.DAY_OF_WEEK) - 1;

        for (int i = 0; i < offday; i++) {
            System.out.printf("\t");
        }

        int month = c.get(Calendar.MONTH);
        while (c.get(Calendar.MONTH) == month) {
            System.out.printf("%d"
                    + ((c.get(Calendar.DAY_OF_WEEK)) != 7 ? "\t" : "\n"),
                    c.get(Calendar.DAY_OF_MONTH));
            c.add(Calendar.DAY_OF_MONTH, 1);
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int Year, Month;

        // 获取当前时间的对象
        Calendar cal = Calendar.getInstance();
        System.out.println("输入年份:");
        Year = sc.nextInt();
        System.out.println("输入月份:");
        Month = sc.nextInt();
        sc.close();

        // 设置当前年份,set方法(日历字段,字段的变量)
        cal.set(Calendar.YEAR, Year);

        // 下面可以设置月份,注:月份设置要减1,
        //所以设置1月就是1-1,设置2月就是2-1,如此类推
        cal.set(Calendar.MONTH, Month);

        // 调到上个月 ,如果上面set未减一,可利用add方法调到上个月
        cal.add(Calendar.MONTH, -1);

        // 得到一个月最后一天日期(31/30/29/28)
        int MaxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println();
        System.out.println(Month + "月的天数为" + MaxDay + "天");

        printMonth(cal);

        // 按你的要求设置时间
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) - 1, MaxDay,    23, 59, 59);
        // 按格式输出
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
        System.out.println("\n\n");
        System.out.println(sdf.format(cal.getTime()));
    }
}

你可能感兴趣的:(java)