- /*
- * 需求:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的
- * 格式输入一个日期,程序计算这一天是星期几,并且计算出
- * 是一年中的第几天。
- * 思路:1、 为了方便,封装一个判断平年还是闰年的方法
- * 2、利用for循环,if-else条件封装一个方法,用来
- * 计算日期基数1900年1月1日到输入日期的天数。
- * 细分为三个部分:日期基数到用户指定年的天数+用户指定年首日到指定月首日的天数+指定月天数
- * 3、用计算出的天数模以7就是星期数
- * */
- package pack;
- public class yearDemo {
- public static void main(String[] args)
- {
- sop(duty(2013,2,5));
- sop(witDay(2013,2,5));
- }
- private static boolean runYear(int year)//定义方法:判断用户指定年是否为闰年
- {
- return (year%4==0&&year%100!=0||year%400==0);
- }
- private static int yeaSum(int yea)//定义方法:计算日期基数到用户指定年的天数
- {
- int sum = 0;
- for(int year=1900;year<yea;year++)//以1900年为基数年
- {
- if(runYear(yea))
- sum+=366;
- else
- sum+=365;
- }
- return sum;
- }
- private static int monSum(int yea,int mon,int day)//定义方法:计算用户指定年首日到指定月首日的天数
- {
- int sum = 0;
- for(int month=1;month<mon;month++)
- {
- if(month==2)
- {
- if(runYear(yea))
- sum+=29;
- else
- sum+=28;
- }
- else
- {
- if(month==4||month==6||month==9||month==11)
- sum+=30;
- else
- sum+=31;
- }
- }
- return sum;
- }
- public static int days(int yea,int mon,int day)//定义方法:计算1900年1月1日到输入日期的天数
- {
- int sum = 0;
- sum = yeaSum(yea);//日期基数到用户指定年的天数
- sum += monSum(yea,mon,day);//用户指定年首日到指定月首日的天数
- sum += day;
- return sum;
- }
- public static int duty(int yea,int mon,int day)//定义方法:计算用户输入日期的星期
- {
- return days(yea,mon,day)%7;
- }
- public static int witDay(int yea,int mon,int day)//定义方法:计算用户输入日期是本年的第几天
- {
- int sum = 0;
- sum = monSum(yea,mon,day)+day;
- return sum;
- }
- public static void sop(Object obj)//定义方法:打印
- {
- System.out.println(obj);
- }
- }
复制代码 这部分是主要思想,非法日期抛异常的代码还在编写中……
|