java 输出当月日历_java 实现打印当前月份的日历

Center

实现当前日历的打印,当前日期用*来表示。

关键得出这个月的第一天是星期几。

基姆拉尔森计算公式

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日数+1,m表示月份数。y表示年数。

注意1:在公式中有个与其它公式不同的地方:

把一月和二月看成是上一年的十三月和十四月,

例:假设是2004-1-10则换算成:2003-13-10来代入公式计算。

注意2:在大多数天主教国家的日历中,在1752年没有9.3-9.13。在这一年的日历中9月2号

后面直接就是9月14号,所以在计算某天是星期几的算法中要把这一特殊情况考虑在内

package work_0529;

import java.util.Scanner;

public class main {

private static int year;

private static int month;

private static int day;

private static boolean flag;

private static int count;//当前月份的天数

public static void main(String[] args) {

if(!getInput()) return;

if(!judgeData()) return;

int a = getData();

System.out.println("日 一 二 三 四 五 六");

int j=0;

while(a-- > 0){ System.out.print(" "); j++;}

for(int i=1;i <= count; i++)

{

if(j%7==0)System.out.println("\n");

j++;

System.out.print(String.format("%4d",i));

if(day==i)System.out.print("*");

}

}

private static boolean judgeData() {

flag=false;// false表示平年。反之

if(year%100==0) flag=true;

else if(year%4==0) flag=true;

if(year<=0){

System.out.println("年份不能小于等于0");

return false;

}

if(month<=0 || month>12){

System.out.println("检查月份的范围");

return false;

}

if(month==2){

if(flag && day>29){

System.out.println("当前为"+(flag?"闰年":"平年")+"二月份不能大于29");

return false;

}

if(!flag && day > 28){

System.out.println("当前为"+(flag?

"闰年":"平年")+"二月份不能大于28");

return false;

}

if(flag) count=29;

else count=28;

}

if(month==1 || month==3 || month==5|| month==7|| month==8|| month==10|| month==12)

{

if(day<=0 || day > 31){

System.out.println("检查日期的范围");

return false;

}

count =31;

}

else if(month!=2){

if(day<=0 || day>30){

System.out.println("检查日期的范围");

return false;

}

count = 30;

}

return true;

}

private static int getData() {

int tmpDay=1;// 表示

int a;

if (month == 1 || month == 2) { month += 12; year--; }

if((year<1752) || (year==1752 && month<9) ||

(year==1752 && month==9 && tmpDay<3)){

a = (tmpDay + 2*month + 3*(month+1)/5 + year + year/4 +5) % 7;

}else{

a = (tmpDay + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400)%7;

}

return a;

}

private static boolean getInput() {

try {

System.out.print("请输入日期(格式XXXX-XX-XX):");

Scanner scanner = new Scanner(System.in);

String str = scanner.nextLine();

year = Integer.parseInt(str.substring(0, str.indexOf('-')));

str = str.substring(str.indexOf('-') + 1, str.length());

month = Integer.parseInt(str.substring(0, str.indexOf('-')));

str = str.substring(str.indexOf('-') + 1, str.length());

day = Integer.parseInt(str);

return true;

} catch (NumberFormatException e) {

System.out.println("格式错误");

} catch (StringIndexOutOfBoundsException e2) {

System.out.println("格式错误");

}

return false;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xmlhttprequest 跨域_跨域资源共享(CORS)安全性

跨域资源共享(CORS)安全性背景 提起浏览器的同源策略&#xff0c;大家都很熟悉。不同域的客户端脚本不能读写对方的资源。但是实践中有一些场景需要跨域的读写&#xff0c;所以出现了一些hack的方式来跨域。比如在同域内做一个代理&#xff0c;JSON-P等。但这些方式都存在缺陷&…

java 图片识别 tess4j_图像文字识别(四):java调用tess4j识别图像文字

转自&#xff1a;https://blog.csdn.net/a745233700/article/details/80203340javajava调用tess4j识别图像文字Tesseract-OCR支持中文识别&#xff0c;而且开源和提供全套的训练工具&#xff0c;是快速低成本开发的首选。前面记录过在java中调用tesseract-orc&#xff0c;该方法…

sql in转换为join_同一个SQL语句,为啥性能差异咋就这么大呢?(1分钟系列)

《数据库允许空值&#xff0c;往往是悲剧的开始》一文通过explain来分析SQL的执行计划&#xff0c;来分析null对索引命中情况的影响&#xff0c;有不少朋友留言&#xff0c;问explain结果中的type字段&#xff0c;ref&#xff0c;ALL等不一样的值究竟是什么含义。今天花1分钟简…

java字符串笔试题_五道Java常见笔试题及答案汇总

1、String和StringBuffer的区别&#xff1f;答&#xff1a;Java平台提供了两个类&#xff1a;String和StringBuffer&#xff0c;它们可以储存和操作字符串&#xff0c;即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行…

遥感原理与应用孙家炳_2.2遥感应用模型

章节概览遥感应用模型是遥感的一种定量化手段&#xff0c;通常在遥感领域有一个更广为人知的名词——定量遥感。但是定量遥感是一种方法模型而非技术手段&#xff0c;随着科学的发展&#xff0c;热门越来越体会到定量遥感的必要性。定量遥感的应用是十分广泛的&#xff0c;也是…

喜马拉雅 xm文件转m4a_喜马拉雅电台、课程语音如何转成文字?

今天看了一篇文章“AI面前人类一败涂地”就是说了AI的发展让所有的事情几乎都可以实现科技化&#xff0c;无需人工操作&#xff0c;工作效率还比人工要高很多。这样说来的确是这样。语音转换也是其中一门技术&#xff0c;人们现在对于语音的交流很多&#xff0c;比如社交软件的…

java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解

大家好&#xff0c;我是乐字节的小乐&#xff0c;上次说过了Java多态的6大特性|乐字节&#xff0c;接下来我们来看看Java编程里的注解。Java注解有以下几个知识点&#xff1a;元数据注解的分类内置注解自定义注解注解处理器Servlet3.0本文先介绍前面4个知识点&#xff1a;元数据…

酷狗音乐linux版_酷狗音乐概念版APP内测获用户好评:极简化,更高级

这两天在网上冲浪的时候&#xff0c;发现不少网友都在安利一个叫做“酷狗音乐概念版”的APP&#xff0c;难道是酷狗又在闷声搞大事了&#xff1f;搜了一下发现&#xff0c;原来是酷狗音乐概念版APP已经开始进入内测阶段&#xff0c;尝试着下载使用&#xff0c;果然发现“更酷更…

java 计算器类图_多态计算器(封装、继承、多态、简单工厂)

一.封装向对象程序设计中&#xff0c;一个非常重要的技术便是封装&#xff0c;也就是把客观事物封装成抽象的类&#xff0c;并且类可以把自己的数据和方法只让可信的类或者对象操作&#xff0c;对不可信的进行信息隐藏。这样做的好处在于可以使类内部的具体实现透明化&#xff…

图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...

摘 要本文根据《数据库应用系统设计》课程要求而做。选择图书馆管理系统设计与开发是因为觉得图书馆管理系统对我们的帮助很大&#xff0c;并且经常去图书馆&#xff0c;对图书馆的大部分功能及流程还是比较了解&#xff0c;而且现在有些地方可能还不够完善。这次课程设计目标是…

sql server 修改字段不能为空_SQL-SQL介绍

一SQL 介绍SQL&#xff08;Structured Query Language&#xff09;,语义是结构化语言&#xff0c; 是一门 ANSI 的标准计算机语言&#xff0c;用来访问和操作数据库系统&#xff1b;二 数据库介绍2.1 数据库我们已经知道了SQL是操作数据库的语言&#xff0c;那么数据库是什么&a…

拼接的option会多出空行_Word空格,空行,页眉横线等问题,我只花一分钟就全解决了...

从网上复制下来的资料粘贴到Word文档上&#xff0c;出现了许多空格、空行、页眉横线等问题&#xff0c;这时候我们该如何快速地解决这些问题&#xff0c;看看下面的操作你就知道了。一、删除空格1、空格案例从网上复制下来的文字到Word文档中&#xff0c;出现字与字之间有好多空…

oracle连接工具_扯一扯Tableau软件配置数据源系列之Oracle

作者&#xff1a;扯蛋君编辑&#xff1a;齐天大圣声明&#xff1a;本文章仅用于Taleau软件的应用、学习沟通&#xff0c;不代表Taleau公司&#xff1b;文中所示截图来源Taleau官方及软件公开内容&#xff0c;相应著作权归Tableau所有。 今天给大家介绍Tableau工具如何连接数据库…

如何和后台接触的_后台产品,不只是做支持

最近在招聘后台产品经理&#xff0c;面试过程中提到一个问题&#xff0c;这个问题之前也困扰了我很久&#xff1a;你做的后台产品&#xff0c;价值体现在哪里&#xff1f;只是做业务支持么&#xff1f;今天就来聊聊这个话题。我是做后台产品出身&#xff0c;最开始入行做的是云…

云计算呼叫中心_干货|云呼叫中心系统和传统呼叫中心系统的区别在哪?

随着社会的发展&#xff0c;呼叫中心由传统的呼叫中心逐渐发展为云呼叫中心。然而关于这两者的区别&#xff0c;您知道吗&#xff1f;跟随畅远技术一同来了解一下吧......一、购买、安装不同传统呼叫中心软件在配置方面有几个特点&#xff1a;一次购买终身使用&#xff1b;安装…

隔一段时间查找一次 golang_剑指 offer-04 二维数组中的查找

算法名称&#xff1a;二维数组中的查找题目内容&#xff1a;在一个二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该…

在线电脑配置PHP源码,域名授权系统PHP源码 V2.7.0 支持盗版追踪

最新漂亮简洁大气的域名授权系统PHP源码&#xff0c;域名授权系统PHP版&#xff0c;功能强大带有后台&#xff0c;经过版本升级&#xff0c;全新美观大气的UI洁面&#xff01;支持盗版追踪&#xff0c;与卡密系统对接购买卡密对域名进行授权&#xff0c;支持授权代码、到期时间…

php 504网关,504 gateway timeout什么意思

504 gateway time-out(504网关超时错误)是HTTP状态代码&#xff0c;这意味着一个服务器在尝试加载网页或填写浏览器的另一个请求时未从其访问的另一台服务器收到及时响应。换句话说&#xff0c;504错误通常表明不同的计算机&#xff0c;即您正在获取504消息的网站无法控制但依赖…

python 二维数组长度_剑指offer二维数组中的查找【Java+Python】

点击上方"蓝字"&#xff0c;关注了解更多二维数组中的查找1. 题目描述在一个二维数组中(每个一维数组的长度相同)&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组…

失物招领小程序_通知 | 保卫部拟设置失物招领处

保卫部拟设置失物招领处为规范对遗失物品的接收、登记、发放等工作&#xff0c;切实维护师生利益&#xff0c;保卫部拟设置失物招领处&#xff0c;现将有关失物招领的流程明确如下&#xff1a;1、失物招领地点&#xff1a;保卫部二楼中厅。2、遗失物的接收。师生将拾得的遗失物…