黑马程序员技术交流社区

标题: 一个万年历的编程,个人思维而已,欢迎大家前来踢馆!! [打印本页]

作者: 貂裘换酒    时间: 2016-6-26 09:36
标题: 一个万年历的编程,个人思维而已,欢迎大家前来踢馆!!

/**
* 需求:编写一个万年历
* 分析:其实记住小学老师教的口诀就可以了
*      一三五七八十腊,四六九冬三十天,
*      平年二月二十八,闰年二月二十九,
*      平年三百六十五,闰年三百六十六。
* 注解:腊月也就是十二月,冬月也就是十一月。
* @author Administrator
*
*/
public class Test4 {
public static void main(String[] args) {
        Scanner in=new Scanner(System.in);  
        System.out.println("请输入年份:");  
        int nian=in.nextInt();  
        System.out.println("请输入月份");
        int yue=in.nextInt();  
        int sum=0;  
        //计算从1900年到输入的年份有多少天
        for(int year=1900;year<=(nian-1);year++){
                //根据输入的年份判断是否是闰年或者是平年
                if(year%4==0&&year%100!=0||year%400==0){  
                        sum=sum+366;   //闰年366天
                        }else{
                                sum=sum+365;    //平年365天
                                }   
                }
        //计算从一月到输入的月份有多少天
        for(int month=1;month<=(yue-1);month++){
                if(month==2){
                        if(nian%4==0&&nian%100!=0||nian%400==0){  
                                sum+=29;   //闰年二月29
                                }else {   
                                        sum+=28;    //平年二月28
                                        }   
                        }else {   
                                //4  6  9  冬(11)三十天
                                if(month==4||month==6||month==9||month==11){  
                                        sum+=30;   
                                        }else{     
                                                sum+=31;  //1 3 5 7 9 10 腊(12)三十一天
                                                }   
                                }      
                }   
                        sum=sum+1; //从每月的1号开始排列   
                int weekday=sum%7;   //一个星期七天
                        System.out.println("日\t一\t二\t三\t四\t五\t六");  
                for(int i=1;i<=weekday;i++){
                        System.out.print("\t");
                }  
                for(int i=1;i<=30;i++){  
                        if(sum%7==6){   //每到周六换行显示
                        System.out.print(i+"\n");
                        }else {  
                                System.out.print(i+"\t");
                        }
                sum++;
                }
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2