你的位置:首页 > Java教程

[Java教程]万年历(二)


根据if与for编写万年历程序

上一篇中有判断年月的天数,这一篇中有几个要点

①计算1900年1月1日之前的总天数

②计算输入月份的天数(比如输入5,应计算1-4月的总天数)

③星期几计算:1+总天数%7    \t

④每行输入7个

完成万年历完整代码如下

 1 import java.util.Scanner; 2 public class Calendars{ 3   public static void main(String []argas) 4   { 5     Scanner input=new Scanner(System.in); 6     int year;//年份 7     int month;//月份 8     int days=0;//天 9     boolean isRn;//用于判断是否是闰年,true为闰年,false为平年 10     int totalDays=0; 11     System.out.println("******************使用万年历******************"); 12     System.out.println("请输入年份"); 13     year=input.nextInt(); 14     System.out.println("请输入月份"); 15     month=input.nextInt(); 16     //判断是否是闰年 17     if((year%400==0)||(year%4==0&&year%100!=0)) 18     { 19       isRn=true; 20       System.out.println(year+"年是闰年"); 21     } 22     else 23     { 24       isRn=false; 25       System.out.println(year+"年是平年"); 26     } 27     //计算年的总天数 28     for(int i=1900;i<year;i++) 29     { 30       if((i%400==0)||(i%4==0&&i%100!=0)) 31       { 32         totalDays+=366; 33       } 34       else 35       { 36         totalDays+=365; 37       } 38     } 39     //计算输入月份之前的天数之和 40     for(int i=1;i<=month;i++) 41     { 42       switch(i) 43       { 44         case 1: 45         case 3: 46         case 5: 47         case 7: 48         case 8: 49         case 10: 50         case 12: 51           days=31; 52           break; 53         case 2: 54           if(isRn) 55           { 56             days=29; 57           } 58           else 59           { 60             days=28; 61           }   62           break; 63         case 4: 64         case 6: 65         case 9: 66         case 11: 67           days=30; 68           break; 69         default: 70           System.out.print("输入的月份有误"); 71           break; 72       } 73       //输入月的天数保存到days中,但不累加 74       if(i!=month) 75       { 76         totalDays+=days; 77       } 78     } 79      80     //求出星期几,就是前面\t的个数 81     int beforeDays; 82     beforeDays=1+totalDays%7; 83     if(beforeDays==7) 84     { 85       beforeDays=0;//代表星期天,0个\t 86     } 87     System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); 88     //先打印\t 89     for(int i=0;i<beforeDays;i++) 90     { 91       System.out.print("\t"); 92     } 93      94     for(int i=1;i<=days;i++) 95     { 96       System.out.print(i+"\t"); 97       //满7个换行 98       if((i+beforeDays)%7==0) 99       {100         System.out.println();101       }102     }103     104     //System.out.print(year+"年"+month+"月共有"+days+"天");105     106   }107 }

View Code