根据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
原标题:万年历(二)
关键词: