万年历

分析

第一 变量定义:

首先,我们需要一个用来存储对应月份天数的变量 monthDay ,接着我们需要一个用来存储星期数的变量 dayTheWeek,再接着我需要一个用来存放用户输入月份的变量 month , 最后我们需要一个用来存储用户输入年份的变量 year,和一个空字符串 str ;通过这些变量,我们很基本的认识到,我们现实确认该月的天数,然后通过格式化 DateFormat 将该年份月份变成一个时间,最后我们再通过Calendar中的DAY_OF_WEEK 常量将其获取下来。

第二 代码编写

public static void permanentCalendar() throws ParseException {
		int monthDay = 0;
		int dayTheWeek = 0;
		int month = 0;
		int year = 0;
		String str = "";
		
		System.out.println("请输入一个年份:");
		Scanner scanner = new Scanner(System.in);
		year = scanner.nextInt();
		System.out.println("请输入一个月份:");
		month = scanner.nextInt();
		switch (month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			monthDay = 31;
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			monthDay = 30;
			break;
		default:
			if ((year % 4 ==0 && year % 100 != 0) || year % 400 == 0) {
				monthDay = 29;
			}else {
				monthDay = 28;
			}
			break;
		}
		str = year+"年"+month+"月";
		Date date = new Date();
		DateFormat dateFormat = new SimpleDateFormat("yyyy年M月");
		date = dateFormat.parse(str);
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		//划重点,这是这方法的关键所在
		dayTheWeek = calendar.get(calendar.DAY_OF_WEEK);
		for (int i = 0; i < 7; i++) {
			if (i == 0) {
				System.out.print("星期7\t");
			}else {
				System.out.print("星期"+i+"\t");
			}
			
		}
		System.out.println();
		for (int i = 1; i < 42; i++) {
			if (i < dayTheWeek) {
				System.out.print("\t");
			}else {
				if (i < (dayTheWeek+monthDay)) {
					System.out.print((i-dayTheWeek+1)+"\t");
				}
			}
			if (i % 7 == 0) {
				System.out.println();
			}
		}
		
	}

这个方法时的关键点是这句 dayTheWeek = calendar.get(calendar.DAY_OF_WEEK); 我们不能直接通过calendar.DAY_OF_WEEK获取星期数,必须通过calendar.get()方法将其转化一下,才能获取到正确的星期数。

最后附上结果图

万年历_第1张图片

你可能感兴趣的:(万年历,万年历)