Java使用Calendar类完成日历程序的编写

编写一个程序,程序提供两种功能:

  1. 根据用户输入的年份输出该年日历。
  2. 根据用户输入的日期,输出该天星期。
    程序应具有良好的人机交互性能,即:程序应向用户提示功能说明,并可根据用户的功能选择,执行对应的功能,并给出带详细描述信息的最终执行结果。

import java.util.Calendar;
import java.util.Scanner;
public class Test{
	Calendar cal=Calendar.getInstance();//调用Calendar
	static Scanner scan=new Scanner(System.in);//获得输入
	
	
	private void func1() {            //实现功能1,打印指定年份的全年日历
		System.out.println("输入查询的年份:");
		int year=scan.nextInt();	//输入查询到年份
		int month=0;
		int day=0;		
		for(month=0;month<12;month++) {			
			System.out.println("\t"+"\t"+"\t"+(month+1)+"月");//每个月标题
			System.out.println("Sun\tMON\tTue\tWed\tTur\tFri\tSat\t");//从星期天开始,星期六结束
			cal.set(year,month,1);			
			int n=cal.get(Calendar.DAY_OF_WEEK)-1;//通过返回每个月第一天是星期几来获得每个月一号之前有几个空格
			for(int i=0;i<n;i++) {
				System.out.print("\t");			//每个月一号之前全为空格输出
			}								
			cal.set(year,month+1,0);			
			int iday=cal.get(Calendar.DAY_OF_MONTH );//设定日期,来返回前一个月一共有多少天,可免除闰年的判断
			for(day=1;day<iday+1;day++) {
				cal.set(year,month,day);				
				System.out.print(cal.get(Calendar.DAY_OF_MONTH)+"\t");//按照日期进行输出
				if(cal.get(Calendar.DAY_OF_WEEK )%7==0) {
					System.out.print("\n");				//每行到了星期六之后进行换行
				}								
			}
			System.out.println("\n");			//每个月完了之后进行换行
			System.out.println("=====================================================");//分界符号,使画面更简洁,易观察
		}

	}	
	private void func2() {			//实现功能2,查询指定日期的星期
		System.out.println("输入要查询日期的年份");
		int year=scan.nextInt();
		System.out.println("输入查询要日期的月份");
		int month=scan.nextInt();
		System.out.println("输入要查询日期的日期");
		int day=scan.nextInt();		
		cal.set(year,month-1,day);
		int n=cal.get(Calendar.DAY_OF_WEEK)-1;//Calendar类的方法,直接输出查询日期的星期
		if(n==0) {
			System.out.println("该天为星期天");
		}
		else {
			System.out.println("该天为星期"+n);
		}		
	}	
	private	 void finish() {
		System.out.println("欢迎下次使用!");//退出程序
		
	}	
	public static void main(String[] args) {
		Test a=new Test();
		while(true) {
			System.out.println("欢迎使用该日历小程序,请按照提示进行功能选择");
			System.out.println("输入数字“1”,即可打印输入年份的全年日历;输入数字“2”,即可查询指定日期为星期几;输入数字“3”,即可退出该程序");
			int n=scan.nextInt();
			if(n==1) {		
			a.func1();
			}
			else if(n==2) {
				a.func2();
			}
			else if(n==3) {
				a.finish();
				break;
			}
			else {
				System.out.println("请按照提示进行输入");
			}
			System.out.println("============================================");
		}
	}		
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值