Java Calendar类实现万年历 XDJava小作业

1)      根据用户输入的年份输出该年日历。
2)      根据用户输入的日期,输出该天星期。 

import java.util.Calendar;
import java.util.Scanner;
//1)      根据用户输入的年份输出该年日历。
//2)      根据用户输入的日期,输出该天星期。
public class CalendarPrint {
	private static int myYear,myMonth,myDays;
	public static void printCalendar()
	{
		myMonth = 0;//初始化为一月 Calendar类中一月为0;
		Calendar c = Calendar.getInstance();
		c.set(myYear,myMonth,1);
		int year = c.get(Calendar.YEAR);//获取日历年份
		while(year == myYear)//当日历年份不为所要获取的年份时退出循环
		{
			System.out.println(myMonth+1 + "月份");//月份打印
			System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
			int weekDay = c.get(Calendar.DAY_OF_WEEK);//获取一号是星期几,将其打印出来
			for(int i=1;i<weekDay;i++)
			{
				System.out.print("\t");
			}
			int month = c.get(Calendar.MONTH);//获取月份
			while(month == myMonth)
			{
				int day = c.get(Calendar.DAY_OF_MONTH);//获取日历
				System.out.print(day+"\t");
				weekDay = c.get(Calendar.DAY_OF_WEEK);
				if(weekDay == 7)//触发换行
				{
					System.out.print("\n");
				}
				c.add(Calendar.DAY_OF_MONTH, 1);//重置月份
				month = c.get(Calendar.MONTH);
			}
			year = c.get(Calendar.YEAR);//重置年份
			myMonth ++ ;
			System.out.print("\n\n");//间隔日历
		}
	}
	public static void printWeekday()
	{
		Calendar c = Calendar.getInstance();
		c.set(myYear,myMonth-1,myDays);
		int Weekday = c.get(Calendar.DAY_OF_WEEK) - 1;
		if(0 == Weekday)
		{
			System.out.println("星期日");
			return;
		}
		System.out.println("星期" + Weekday);
	}
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		System.out.println("请选择所要实现的功能\n1) 由输入年份输出该年日历\n2) 由输入日期输出该天星期\n请输入 1 或 2");
		int flag = sc.nextInt();
		if(1 == flag)
		{
			System.out.println("请输入年份");
			myYear = sc.nextInt();
			CalendarPrint.printCalendar();
		}
		else if(2 == flag)
		{
			System.out.println("请输入年份");
			myYear = sc.nextInt();
			System.out.println("请输入月份");
			myMonth = sc.nextInt();
			System.out.println("请输入日份");
			myDays = sc.nextInt();
			CalendarPrint.printWeekday();
		}
        sc.close();
		return;
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值