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


相关推荐

  • 免费申请国外免费域名超详细教程

    免费申请国外免费域名超详细教程1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

    2022年6月30日
    52
  • 隐藏表白技能,python教你如何使用图片exif信息隐藏表白,教你如何修改,查询exif信息。

    隐藏表白技能,python教你如何使用图片exif信息隐藏表白,教你如何修改,查询exif信息。

    2021年9月18日
    46
  • android 中 TextView的用法[通俗易懂]

    android 中 TextView的用法[通俗易懂]本文讲解TextView4种常见的用法:一.如何显示文本(URL,不同大小、字体、颜色的文本)    activity_main.xml

    2025年7月16日
    2
  • SCI论文投稿Cover Letter的写作

    SCI论文投稿Cover Letter的写作http://www.dxy.cn/bbs/topic/19651815SCI论文投稿CoverLetter的写作和中文投稿有很大的不同,CoverLetter的撰写对于新手而言不知该写什么,而对于老手往往又被忽视,CoverLetter重要吗?可有可无吗?下面我将从科学网转载系列有关CoverLetter的帖子,但愿对于新手、老手都有所帮助:#1CoverLet

    2022年5月24日
    43
  • 移动端H5开发基础[通俗易懂]

    移动端H5开发基础[通俗易懂]文章目录前言一、移动端屏幕相关概念1.屏幕尺寸2.屏幕分辨率3.屏幕像素密度(ppi=pixelsperinch)二、像素1.物理像素2.CSS像素3.设备独立像素4.位图像素5.像素比(dpr)三、视口1.布局视口2.视觉视口3.理想视口三、缩放行为1.用户缩放2.系统总结前言随着移动端H5需求场景越来越多,例如微信公众号中H5页面的开发,APP中内嵌H5页面等,移动端H5开发基础知识和技巧是前端开发工程师必备的技能~一、移动端屏幕相关概念1.屏幕尺寸.

    2022年6月21日
    23
  • jmeter安装教程以及jdk环境配置_正版win10下载

    jmeter安装教程以及jdk环境配置_正版win10下载【Jmeter】win10/win11:Jmeter下载、安装、汉化、新机迁移、版本更新(Jmeter4以上版本均适用)

    2025年8月8日
    3

发表回复

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

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