输入年份和第一天的星期,即可展示全年日历

利用循环每次展示一个月的日历,日历每一行作为一个字符串,长度定为28

根据观察可知,第一天的星期几加7之后除以7取余则可知道该月第一天之前有几天空着,每天字符串长度为4,即可知道当天的字符串。

上个月第一天星期几,加上上个月除以7取余的数字,再除以7则可推断出下个月第一天星期几,以此来判断第一天

为了使日历较为工整,可以对字符串长度进行调整,添加空格补齐字符串

import java.util.List;
import java.util.Scanner;
public class Rili {public static void main(String[] args){String First,Year,Months,m;int a,b,L,d,l,ll,f,D=30,Month=1;//定义月份字符串数组String[]YueFen = {"January","February","March","April","May","June","July","August","September","October","November","December"};//定义大月数组int[] Da = {1,3,5,7,8,10,12};//定义小月数组int[] Xiao = {4,6,9,11};Scanner scan = new Scanner (System.in);System.out.println("请输入年份");Year = scan.nextLine();a = Integer.parseInt(Year);System.out.println("请输入第一天是周几");First= scan.nextLine();b = Integer.parseInt(First);while (Month<=12){f=2;Months = YueFen[Month-1];L=Months.length();//对齐月份字符串长度开始while (L<12){StringBuffer sc = new StringBuffer();sc.append( Months).append(" ");Months=sc.toString();L= Months.length();}//对齐月份字符串长度结束//添加月份开始分割横线for(int i=1;i<=28;i++){System.out.print("-");}System.out.println();//添加结束//输出某月日历System.out.println( Months+"\t"+Year);System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat\t");for(int i=0;i < Da.length;i++){if(Month == Da[i]){f=0;break;}}for(int i=0;i < Xiao.length;i++){if(Month == Xiao[i]){f=1;break;}}switch (f){case 0:D=31;break;case 1:D=30;break;case 2:int yn;yn=a%4;if(yn==0){D=29;}else {D=28;}break;}d = 4*((b+7)%7);String str="";int day=1;while (day<=D){if (day==1){for(int ii=1;ii<=d;ii++){StringBuffer sa = new StringBuffer();sa.append(" ").append(str);str=sa.toString();}}m=Integer.toString(day);l=m.length();for (int sw=0;sw<4;sw++){if (l<4){String n = m;m=n+" ";l=m.length();}}String str2=str;str=str2+m;ll=str.length();if (ll == 28||day == D){System.out.println(str);str="";}day++;}System.out.println();//结束输出日历//添加月份结束分割线for(int i=1;i<=28;i++){System.out.print("-");}System.out.println();System.out.println();System.out.println();//添加完毕//月份增加,进入下一个月Month ++;int w,y;w=D%7;y=b;b=(y+w)%7;}}}

今夜刚写完的代码,可能不是方便理解,慢慢理解就好,有问题私信或者评论交流

新手代码,不喜勿喷!!!!!!!

Java输入年份和第一天的星期,展示全年日历相关推荐

  1. java输入年份和月份,实现日历的打印

    解决思路:首先,确定月份的第一天是星期几.其次,确定这个月有多少天,要注意的是闰年和平年的二月天数是不一样的.闰年(1.年数能被4整除,但不能同时被100整除,2.年数能被400整除(二者符合其一就可 ...

  2. JAVA 输入年份月份打印该月的日历

    请输入年份:yyyy 请输入月份:MM 打印出yyyy-MM日历 <span style="font-size:18px;">package qq;import jav ...

  3. Java输入年份与月份判断月份有多少天

    package dome;import java.util.Scanner;/*** 控制台输入年份和月份* 输出这一年这一月一共有多少天* 比如:* 输入:2019年8月* 输出:2019年8月一共 ...

  4. Java 输入年份、月份,输出当月日历表

    总体的逻辑思路: 1.以1900年1月1号(星期一)为初始日期用来计算截止到输入年份的上一年最后一天的总天数: 2.计算截止到输入月份的上一个月最后一天的总天数进行 3.将获得的总天数%7得到剩余i天 ...

  5. Java输入年份和月份,判断当前月份有多少天

    @Test//输入年份和月份,判断当前月份有多少天public void test8(){Scanner scanner = new Scanner(System.in);System.out.pri ...

  6. java输入年份的函数_JAVA 中输入年份和月份输出月历 我才学java EditPlus 编译通过...

    importjava.util.Scanner;classYear{publicstaticvoidmain(String[]args){inty,m,i=0;Scannerscan=newScann ...

  7. Java黑皮书课后题第5章:**5.28(显示每月第一天是周几)编写程序,提示用户输入年份和代表概念第一天是周几的数字,然后在控制台显示该年各个月份的第一天是周几

    5.28(显示每月第一天是周几)编写程序,提示用户输入年份和代表概念第一天是周几的数字,然后在控制台显示该年各个月份的第一天是周几 题目 题目概述 破题 代码 运行示例 题目 题目概述 5.28(显示 ...

  8. 输入年份,打印全年的日历。 每周的第一天应为星期日。 星期制在我国正式使用是清末(1905年),但其来源却是中外时间文化的殊途同归。古人观天象计时间除了最明显的日

    输入年份,打印全年的日历. 每周的第一天应为星期日. 星期制在我国正式使用是清末(1905年),但其来源却是中外时间文化的殊途同归.古人观天象计时间除了最明显的日.月二星外,还观测到太阳系中的另外五大 ...

  9. Java黑皮书课后题第6章:**6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几

    6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几 题目 题目描述 编程练习题3.21的Zel ...

最新文章

  1. 好莱坞科幻新片《b》,钦定 AI 机器人出演女主角!
  2. 赫夫曼树建立c语言源程序编译结果详细解释,哈夫曼树的建立与实现最终版(备份存档)...
  3. C++ 操作符优先级
  4. Java中集合(五)Set
  5. Spring MVC 原理 - DispatcherServlet调用完整过程
  6. UiAutomator喷射事件的源代码分析
  7. android学习笔记---asm.jar的使用方法--手机真机屏幕同步抓取软件
  8. Solrflux源码分析-Sql Support within Solr-类Sql的solr搜索实现(2)
  9. node.js抓取数据(fake小爬虫)
  10. 如何快速删除代码中的空行?eclipse删除空行超实用
  11. c51单片机c语言交通灯的程序设计,51单片机交通灯程序设计
  12. matlab vav终端控制器编程,基于TRNSYS与VAV控制系统与仿真.pdf
  13. php 连接局域网打印机,如何添加局域网打印机?局域网打印机添加方法介绍
  14. vue3中瀑布流插件 vue-masonry 的使用
  15. ucore操作系统lab2实验报告
  16. h5页面生成图片分享到微信js_微信端h5页面如何调用分享页面的接口
  17. php异步执行shell脚本
  18. mcpe服务器网页控制台教程,mcpe服务器指令
  19. 曼哈顿距离,欧式距离,余弦距离
  20. 0428-Scrum团队成立

热门文章

  1. 正确解决驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
  2. 哪些是平面设计必学的?
  3. IntelliJ IDEA2022.1 正式发布, 更快,更强
  4. 金蝶注册表服务器地址,金蝶KIS客户端修改IP连接服务器的方法
  5. LinuxCast学习笔记十八:Network_Basic
  6. Centos7 PHP的安装和配置
  7. python-docx 实现分栏
  8. BUUCTF pyre
  9. u-boot启动分析02(board_init_f,board_init_r)
  10. 店匠科技发布 Shoplazza Awards 奖项,为优秀出海品牌及合作伙伴点赞