java当月日历_java 实现打印当前月份的日历
实现当前日历的打印。当前日期用*来表示。
关键得出这个月的第一天是星期几。
基姆拉尔森计算公式
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;
}
}
java当月日历_java 实现打印当前月份的日历相关推荐
- java 输出当月日历_java 实现打印当前月份的日历
实现当前日历的打印,当前日期用*来表示. 关键得出这个月的第一天是星期几. 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示 ...
- java当月最后一天_Java日期循环,Java获取当月的第一天和最后一天 | 学步园
1.Java日期循环 SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); String dateStr1 ...
- 乘法口诀表java加表格_Java 面试 - 打印九九乘法口诀表
在Java面试过程中, 面试者经常会被要求手写代码或上机操作.一般来说,手写代码或上机操作,主要还是考察面试者的分析问题和解决问题的能力.打印九九乘法口诀无疑是非常基础的,那么如何实现呢?首先我们先来 ...
- java批量打印标签_java批量打印
下面是实现java批量打印功能的具体工具类,其中的Info类和UserClass为具体的快递面单中要打印的信息,以参数的方式传递过来,循环调用java PrinterJob服务进行打印:这里的快递尺寸 ...
- java打星星_java初学打印星星以及九九乘法表
Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i< ...
- java 当月最后一天_java中取得当月最后一天的四种方法
java中取得当月最后一天的四种方法 第一种,使用Calendar的roll方法,在限制某个日期字段不改变的形式下,改变其他日期字段的值. 第二种,使用Calendar的getActualMaximu ...
- java输出文件目录_Java实现打印文件路径和展示文件目录
/** 输入文件或目录,若为文件打印其路径和名字, * 若为目录,可选文件后缀名,若不选,则打印其下所有文件, * 若选择后缀名,则打印其下所有匹配后缀名的文件 * * * mist lee,2014 ...
- java输出钻石_Java程序打印钻石形状
可以通过先打印三角形再打印倒三角形来打印菱形.一个例子如下:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ...
- java输出梯形_java怎么打印等腰梯形
西兰花伟大炮 var arrorigin = new Array(); arrorigin[0] = [0,0,0,0,1,1,1,0,0,0,0]; arrorigin[1] = [0,0,0,1, ...
最新文章
- pandas索引复合索引dataframe数据、索引其中一个水平(level)的所有数据行(index all rows in a level)
- Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)
- spark 随机森林算法案例实战
- 关于mbzuai的offer的三点思考
- python 物理引擎 摩擦力_参赛作品2-phenom的2D物理引擎
- C语言 pthread_create
- 准备开始考试系统分析员
- PHP微信多级三级分佣系统,微信三级分销系统微信三级分销系统
- 解决方案 | 为什么要配置mysql环境变量以及如何配置
- 腾讯视频弹幕爬取----------之亲爱的,热爱的
- (转)SonicStage CP 4.3 中文迷你版和完整版下载
- linux密码记录木马,注意 “QQ大盗”木马注入 QQ 进程记录QQ账号与密码
- 韩天峰 - Swoole4-全新的PHP编程模式
- 前端 - bootstrap树形菜单
- 代码解释及MATLAB复现--灯哥四足机器人步态规划部分
- 实现全国行政区域结构化管理
- five86-1靶机渗透攻略
- 都2023年了,你如果还不知道这18个C语言入门经典程序就亏了
- html调用mp4视频播放不,为何html中嵌入mp4格式视频播放不了
- 《深入浅出Spring》@PropertySource、@Value注解及动态刷新实现