加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

练习打印万年历

发布时间:2021-05-20 08:55:59 所属栏目:大数据 来源: https://blog.csdn.net/summoxj
导读:代码如下: import java.util.Scanner; /* ?* 练习打印万年历 ?*/ public class Demo36 { public static void main(String[] args) { //从键盘上接收一个年月 Scanner sc=new Scanner(System.in); System.out.println("请输入年和月:"); int year=sc.nextIn

代码如下:

import java.util.Scanner;
/*
?* 练习打印万年历
?*/
public class Demo36 {
public static void main(String[] args) {
//从键盘上接收一个年月
Scanner sc=new Scanner(System.in);
System.out.println("请输入年和月:");
int year=sc.nextInt();
int month=sc.nextInt();
//打印这月的日历
printCalendar(year,month);
}
private static void printCalendar(int year,int month) {
System.out.println("日t一t二t三t四t五t六");

//这个月的第一天是星期几
int fromDay=getWeekday(year,month,1);

//打印这个月第一天之前的空白
for(int i=1;i<=fromDay;i++) {
System.out.print("t");
}
int count=fromDay; //定义变量统计打印的天数
//打印这个月的第一天
for(int day=1;day<=getDaysOfMonth(year,month);day++) {
System.out.print(day+"t");
count++;
if(count%7==0)
System.out.println("");
}
}
//返回year年month月day天是星期几,数字0代表星期日,1~6代表星期一~星期六
private static int getWeekday(int year,int month,int day) {
//先计算900年1月1日到指定year年month月day日共有多少天
int sum=getDaysFrom19000101(year,day);
return sum%7;
}
private static int getDaysFrom19000101(int year,int day) {
int sum=0;
//先计算1900-1-1到year-1年12月31日共有多少天
for(int y=1900;y<year;y++) {
sum+=getDaysOfYear(y);
}
//再加上当年的天数
sum+=getDaysToDateInCurrentYear(year,day);
return sum;
}
//计算当年从1月1日到指定的month月day日共有多少天
private static int getDaysToDateInCurrentYear(int year,int day) {
int sum=0;
//累加前month-1个月的天数
for(int m=1;m<month;m++) {
sum+=getDaysOfMonth(year,m);
}
//累加当月的天数
return sum+day;
}
//计算year年m月有多少天
private static int getDaysOfMonth(int year,int m) {
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(isLeapYear(year))
return 29;
else?
return 28;
}
return 0;
}
//计算每年的天数
private static int getDaysOfYear(int y) {
if(isLeapYear(y)) {
return 366;
}
return 365;
}
//判断某一年是否为闰年
private static boolean isLeapYear(int y) {
if(y%4==0&&y%100!=0||y%400==0)
return true;
return false;
}
}

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读