简单日历

题目要求:键盘输入一个年份和月份,控制台输出当月的日历

package com.jx.demo3;

import java.util.Scanner;
/*
 * main方法
 */
public class Test {

    public static void main(String[] args) {
        CalendarManage calendarManage = new CalendarManage();
        Scanner scanner = new Scanner(System.in);
        do {
            System.out.println("1.显示当月日历");
            System.out.println("2.上个月日历");
            System.out.println("3.下个月日历");
            System.out.println("4.查看指定时间日历");
            System.out.println("5.退出");
            int n = scanner.nextInt();
            if(n==1)
                calendarManage.jx();
            else if(n==2)
                calendarManage.jx1();
            else if(n==3)
                calendarManage.jx2();
            else if(n==4)
                calendarManage.jx3();
            else if(n==5)
                System.exit(0);
        } while (true);
    }
}
package com.jx.demo3;
/*
 * 日历类
 * 打印一个月的日历
 * 需要知道这个月的天数 第一天是星期几
 */

import java.util.Calendar;

public class MyCalendar {

    private static int year;
    private static int month;
    static Calendar calendar = Calendar.getInstance();

    public MyCalendar() {
        this.year = calendar.get(Calendar.YEAR);
        this.month = calendar.get(Calendar.MONTH);
    }
    public MyCalendar(int year, int month) {
        calendar.set(year, month-1, 1);
        this.year = calendar.get(Calendar.YEAR);
        this.month = calendar.get(Calendar.MONTH);
        System.out.println(year+" "+this.month);
    }
    /**
     * 打印
     */
    public void print() {
        System.out.print("=================");
        System.out.print("当前日期:");
        System.out.print(calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月");
        System.out.print("=================\n");
        //把时间设置为这个月第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        /*
         * 获得这个月第一天是星期几
         * 我们 1 2 3 4 5 6 7
         * 电脑 2 3 4 5 6 7 1 所以+6)%7 差一天 
         */
        int i = (calendar.get(Calendar.DAY_OF_WEEK) + 6) % 7;
        /*
         * roll()方法
         * 这个月的最后一天就是这个月的天数
         * 第一个参数 时间单位 第二个参数 增加或减少的数
         * 不会改变更大的时间单位 
         * 这个月最后一天+1,会回到本月第一天
         * 这个月第一天-1,会回到本月最后一天
         */
        calendar.roll(Calendar.DATE, -1);
        int days = calendar.get(Calendar.DATE);
        if (i == 0)
            i = 7;
        int num = 1, i2 = i;
        System.out.println("一" + "\t" + "二" + "\t" + "三" + "\t" + "四" + "\t" + "五" + "\t" + "六" + "\t" + "日");
        for (int j = 1; j < days + i; j++) {
            if (i2-- > 1)
                System.out.print("\t");
            else if (j - i >= 0)
                System.out.print((j-i+1) + "\t");
            if (j % 7 == 0)
                System.out.println();

        }
        System.out.println("\n===================================================");
    }

    // get set
    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public Calendar getCalendar() {
        return calendar;
    }

    public void setCalendar(Calendar calendar) {
        this.calendar = calendar;
    }

}
package com.jx.demo3;
/*
 * 管理类
 */

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

public class CalendarManage {
    MyCalendar myCalendar = new MyCalendar();
    //显示本月
    public void jx() {
        MyCalendar myCalendar = new MyCalendar();
        myCalendar.print();
    }
    //上个月
    public void jx1() {
        int year = myCalendar.getYear();
        int month = myCalendar.getMonth();
        System.out.println(month);
        if(month==0) {
            year = year-1;
            month = 12;
            myCalendar.setYear(year);
        }
        MyCalendar.calendar.set(year, month - 1, 1);
        myCalendar.setMonth(MyCalendar.calendar.get(Calendar.MONTH));
        myCalendar.print();
    }
    //下个月
    public void jx2() {
        int year = myCalendar.getYear();
        int month = myCalendar.getMonth();
        if(month==11) {
            year = year+1;
            month = -1;
            myCalendar.setYear(year);
        }
        MyCalendar.calendar.set(year, month + 1, 1);
        myCalendar.setMonth(MyCalendar.calendar.get(Calendar.MONTH));
        myCalendar.print();
    }
    //指定日期
    public void jx3() {
        System.out.println("请输入要查的年月:");
        int year,month;
        Scanner scanner = new Scanner(System.in);
        String days = scanner.nextLine();
        //匹配多种输入格式
        String[] arr = days.split("[ .-]");
        year = Integer.parseInt(arr[0]);
        month = Integer.parseInt(arr[1]);
        MyCalendar myCalendar = new MyCalendar(year, month);
        myCalendar.print();
    }
}
阅读更多
版权声明:转载注明出处,有事找我! https://blog.csdn.net/m0_37713761/article/details/81591667
个人分类: Java基础
下一篇集合类List
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭