java实现万年历[通俗易懂]

java实现万年历[通俗易懂]万年历代码实现packagecom.zll;​importjava.util.Scanner;​/***总结:遇到的bug把传入判断年份的日期都传成输入的year了,应该传入要计算的每一年

大家好,又见面了,我是你们的朋友全栈君。

万年历

代码实现

package com.zll;

import java.util.Scanner;

/**
* 总结:遇到的bug把传入判断年份的日期都传成输入的year了,应该传入要计算的每一年,所以导致
* 计算年份时的不正确所以总天数一直不对。
*/
public class Calendar {
   public static void main(String[] args) {
       //1900.1~~1900.2总天数 一年是365天
       // 1、3、5、7、8、10、12月每月31天
       //4,6,9,11为30天
       // 2月闰年29天,不是闰年就是28天。
       Scanner sc = new Scanner(System.in);
       System.out.println("请输入年份:");
       int year=sc.nextInt();
       System.out.println("请输入月份:");
       int month=sc.nextInt();
       long day=0;//每月有多少天
       long sum=0;//总天数
       for(int i=1900;i<=year;i++){//循环从1900年到你输入年的多少天,不包括输入月份的天数
           if(i==year){//计算了你输入年的月份的天数
               long t;//计算输入月份返回的天数
               for(int z=1;z<month;z++){//从1990年1月开始,就是0天,month小于你月份
                   t=Calday(z,day,i);
                   sum+=t;
              }
          }else{//这个是计算年份的天数
//               long d;
//               for(int j=1;j<=12;j++){
//                   d=Calday(j,day,i);
//                   sum+=d;
//               }
               //优化一下
               boolean flag=year(i);//调用判断闰年的函数year
               if(flag){
                   sum+=366;//返回true为闰年
              }else {
                   sum+=365;
              }
          }
      }
       switch(month){//判断你输入月份的天数,并打印出来
           case 1: case 3: case 5: case 7: case 8: case 10: case 12:
               day=31;
               break;
           case 4: case 6: case 9: case 11:
               day=30;
               break;
           case 2:
               boolean flag=year(year);
               if(flag==true){
                   day=29;
              }else{
                   day=28;
              }
               break;
      }
       printCal(day,sum);//调用打印方法
       System.out.println("\n\n总天数:"+sum);
  }

   /**
    * 打印输出这个月的日期
    * @param day 这个月有多少天
    * @param sum 总天数
    */
   public static void printCal(long day,long sum){
       System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
       int k3=(int)((sum+1)%7);//星期几
       for(int i=1;i<=day;i++){//动态显示i<=多少天
           if(i==1){
               for(int j=0;j<k3;j++){
                   System.out.print("\t\t");
              }
          }
           System.out.print(i+"\t\t");
           if((sum+i)%7==6){
               System.out.println();
          }

      }

  }

   /**
    * 计算闰年
    * @param year
    * @return boolean类型的如果为true则为闰年
    */
   public static boolean year(int year){
       if((year%4==0 && year%100!=0) || (year%400==0)){
           return true;
      }
       return false;
  }

   /**
    * 计算每个月有多少天
    * @param j 传入的月份
    * @param day 这个月有多少天
    * @param year 传入你要计算的年
    * @return
    */
   public static long Calday(int j,long day,int year){
       switch (j){
           case 1: case 3: case 5: case 7: case 8: case 10: case 12:
               day=31;
               break;
           case 4: case 6: case 9: case 11:
               day=30;
               break;
           case 2:
               boolean flag=year(year);
               if(flag==true){
                   day=29;
              }else {
                   day=28;
              }
               break;
      }
       return day;

  }
}

运行截图

 java实现万年历[通俗易懂]

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155272.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月2日 下午1:36
下一篇 2022年7月2日 下午1:46


相关推荐

  • Linux下用户和组的管理

    Linux下用户和组的管理

    2021年4月14日
    160
  • LeetCode——Path Sum II

    LeetCode——Path Sum II

    2022年1月26日
    46
  • copyTo 用法

    copyTo 用法openCV 中 image copyTo 有两种形式 1 image copyTo imageROI 作用是把 image 的内容粘贴到 imageROI 2 image copyTo imageROI mask 作用是把 mask 和 image 重叠传递给 imageRoi 一个是彩色一个为黑白图 nbsp 解析 因为第二幅的 edge 的边缘图与原图进行相交 得到彩色图像

    2026年3月19日
    18
  • (收藏)【 数字化客户体验】NPS、CSAT和CES——2020年跟踪的客户满意度指标「建议收藏」

    (收藏)【 数字化客户体验】NPS、CSAT和CES——2020年跟踪的客户满意度指标「建议收藏」你每收到一个顾客的投诉,就有大约26个人对你的公司不满,但是他们选择沉默。如果你不采取适当的行动,你很可能会失去这些客户。除了失去客户和收入之外,客户满意度低也会损害你的品牌形象——尤其是当某些客户投诉在网上疯传时。幸运的是,客户满意度测量工具可以帮助你收集有价值的反馈,这样你就可以做出客户真正要求的改变和改进——所有这些都是为了给他们提供更好的体验和更愉快的客户旅程。为了简单起见,我们应该提到客户满意度指标通常也称为CX指标。CX是什么意思?CX代表客户体验。CX的准确定义将客户体验描

    2022年5月7日
    173
  • Windows搭建SVN服务器「建议收藏」

    Windows搭建SVN服务器「建议收藏」写这篇文章其实是弥补6年前的一个遗憾,之前在第一家公司时,快要离职时,帮公司搭建一个SVN服务器,当时在Linux上面搭建,搭建的服务器不支持HTTP协议,无法在浏览器中查看,限于当时的能力,未能找到具体的解决方案。今天听同事在提SVN服务器,突然想搭建一个,搭建之后,Windows环境可以直接通过http协议访问,就这样吧,后续遇到SVN使用的具体问题再细究吧。需要的软件S…

    2022年7月19日
    15
  • Java基准测试工具JMH使用

    Java基准测试工具JMH使用JMH,即JavaMicrobenchmarkHarness,这是专门用于进行代码的微基准测试的一套工具API。JMH由OpenJDK/Oracle里面那群开发了Java编译器的大牛们所开发。何谓MicroBenchmark呢?简单地说就是在方法层面上的benchmark,精度可以精确到微秒级。本文主要介绍了性能基准测试工具JMH,它可以通过一些功能来规避由JVM中的JIT或者其他优化对性能测试造成的影响。

    2022年7月27日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号