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