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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharmdebug怎么用_使用中是什么意思

    pycharmdebug怎么用_使用中是什么意思Debug工具篇文章接上文Debug工具是pycharmIDE中集成的调试程序工具,在这里程序员可以查看程序的执行细节和流程或者调解bug。Debug工具使用步骤:1.打断点2.Debug调试打断点断点位置目标要调试的代码块的第一行代码即可,即一个断点即可。打断点的方法单机目标代码右侧空白的位置。Debug调试选择Debug’DebugTest’代码开始运行,直至断点处。并弹出控制台。在此处执行接下来的操作。每一项的作用如下:显示

    2022年10月15日
    0
  • 全球vps交流网站超级vps管理器_phpyun采集

    全球vps交流网站超级vps管理器_phpyun采集今天在写《请珍惜免费资源》这篇文章的时候无意中又发现一款无限流量免费PHP空间「FreeWebHostingArea」,搜索了一下已经有14年的时间,下面老俍就来介绍一下这款免费主机的申请及使用说明。FreeWebHostingArea是美国的一个老牌的免费空间服务商,从2005年开始提供免费PHP空间服务。距今已有14年的时间,真没想到一款免费主机能活这么长时间。FreeWe…

    2022年10月8日
    0
  • 【JVM调优工具】JVM调优工具[通俗易懂]

    【JVM调优工具】JVM调优工具[通俗易懂]一、JVM调优工具1.jstat工具java程序默认使用的xmx_为什么JAVA进程占用内存会超过Xmx设置_保瓶儿的博客-CSDN博客

    2022年5月31日
    26
  • linux重命名文件名_linux 文件重命名

    linux重命名文件名_linux 文件重命名https://blog.csdn.net/weixin_33724570/article/details/91909917https://blog.csdn.net/csdnnews/article/details/87927567https://blog.csdn.net/weixin_34329187/article/details/93004715https://blog…

    2022年9月10日
    0
  • MVC学习笔记八:WebGrid控件的高级使用「建议收藏」

    MVC学习笔记八:WebGrid控件的高级使用「建议收藏」WebGrid控件的高级使用在笔记三中记录了WebGrid的简单使用,但实际工作中并不能满足开发要求,比如:考虑到性能,要求服务器端分页,而不是查出所有数据来进行简单的客户端页面分页;要在排序时,给列标题显示不同图像等等,都不是直接就能满足的,这里记录下对WebGrid进行的较高层次的使用。一.服务器端分页处理在演示服务端分页之前,先做一些简单的准备工作:

    2022年10月6日
    0
  • bigDecimal除法取整数「建议收藏」

    bigDecimal除法取整数「建议收藏」bigDecimal加减乘法都没问题,除法由于会有除不尽小数的情况,如果不限制小数位数的话会进入死循环报错:java.lang.ArithmeticException:Non-terminatingdecimalexpansion;noexactrepresentabledecimalresult。所以要设定小数位数:BigDecimala=BigDecimal.valueO…

    2022年6月26日
    105

发表回复

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

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