泊而至远

导航

 

根据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

 

posted on 2016-03-09 22:46  积_跬步  阅读(330)  评论(0编辑  收藏  举报