万年历(二)

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

 

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