首页 > 编程知识 正文

万年历谁写的好,万年历写法

时间:2023-05-06 19:31:59 阅读:249134 作者:4994

import java.util.Scanner;public class 万年历样本 { /** * 万年历 */ public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入年份:"); int nian = input.nextInt(); System.out.print("请输入月份:"); int yue = input.nextInt(); //不用循环求出上一月的最后一天到当前年份第一天之间的天数. int days = 0; switch(yue-1){ case 12: days += 31; case 11: days += 30; case 10: days += 31; case 9: days += 30; case 8: days += 31; case 7: days += 31; case 6: days += 30; case 5: days += 31; case 4: days += 30; case 3: days += 31; case 2: if(nian % 4 == 0 && nian % 100 != 0 || nian % 400 == 0){ days += 29; }else{ days += 28; } case 1: days += 31; } //计算每个月的天数. int day = 0; switch (yue) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 2: if(nian % 4 == 0 && nian % 100 != 0 || nian % 400 == 0){ day = 29; }else{ day = 28; } break; default: day = 30; break; } for(int i = 1900; i < nian; i++){ if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0){ days += 366; }else{ days += 365; } } /* 计算星期几 */ int firstDayOfWeek; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6 int temp = 1 + days % 7; // 从1900年1月1日推算 if (temp == 7) { // 求当月第一天 firstDayOfWeek = 0; } else { firstDayOfWeek = temp; } //System.out.println("该月第一天是: " + firstDayOfWeek); /* 输出日历 */ System.out.println("星期日/t星期一/t星期二/t星期三/t星期四/t星期五/t星期六"); for (int nullNo = 0; nullNo < firstDayOfWeek; nullNo++) { System.out.print("/t"); // 输出空格 } //day是当月总天数 ,days是1900年1月1日到上个月最后一天的总天数 for (int i = 0; i < day; i++) { System.out.print((i+1) + "/t"); if ((days + i) % 7 == 5) { // 如果当天为周六,输出换行 System.out.println(); } } }}

 

 

此为老师写的万年历样本.与我自己写的有些区别,一个地方用了for循环.而老师的没有,可见老师的写法更简洁,佩服老师的博大精深啊!

logrotate-logrotate配置

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。