java 简单万年历,java万年历简单实例

029785926a65c0d44fea2c798c1abf1d.gif

75c8de7e0d50eed2e15590ed150641a6.png

本文实例讲述了JAVA实现的简单万年历。2b699571f6acc733a7ae05b6d63d5854.png332743de329418696e3108d690c80dee.png

实现思路具体如下:

已知1900年1月1日星期一判断是否闰年

指定年月返回当月的天数

返回一年的总天数

返回距离1900年1月到指定年月的上一个月的总天数

实现代码如下:package 日历;

import java.util.Scanner;

/**

* @author 36D小可爱

*

*/

public class 日历 {

/**

* 判断是否闰年

*

* @param year 年

* @return true || false

*/

public static boolean isR(int year) {

return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;

}

/**

* 指定年月返回当月的天数

*

* @param year 年

* @param month 月

* @return 天数

*/

public static int getDayMonth(int year, int month) {

switch (month) {

case 4:

case 6:

case 9:

case 11:

return 30;

case 2:

if (isR(year)) {

return 29;

} else {

return 28;

}

default:

return 31;

}

}

/**

* 判斷一年的总天数

*

* @param year 年分

* @return 总天数

*/

public static int getYearDay(int year) {

if (isR(year)) {

return 366;

} else {

return 365;

}

}

/**

* 距离1900年1月到指定年月的上一个月的总天数

*

* @param year 年份

* @param month 月份

* @return 总天数

*/

public static int getTotleDay(int year, int month) {

// 1900,1

// 2020,3//假如到2020年3月

// 1900-2019 + 3个月

int d = 0;

for (int i = 1900; i < year; i++) {

d += getYearDay(i);

}

for (int j = 1; j < month; j++) {

d += getDayMonth(year, j);

}

return d;

}

/**

*

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner sc = new Scanner(System.in);

System.out.println("请输入年份");

int days = sc.nextInt();// 获取年份

System.out.println("请输入月份");

int month = sc.nextInt();// 获取月份

int getTotleDay = getTotleDay(days, month);

System.out.println(getTotleDay);// 1900到指定年份的上个月总天数

System.out.println("星期一\t" + "星期二\t" + "星期三\t" + "星期四\t" + "星期五\t" + "星期六\t" + "星期日\t");

int week = getTotleDay(days, month) % 7 + 1;// 获取本月第一天是周几(原理上个月的最后一天+1等于下个月的第一天)

if (week == 1) {// 判断要输出的空格(原理假如是周三则需要输出2个空格,周一则不需要输出空格)

week = 0;

}

for (int i = 1; i < week; i++) {

System.out.print(" \t");// 空格循环输出

}

int day = getDayMonth(days, month);// 获取本月天数

for (int j = 1; j <= day; j++) {

System.out.print(j + "\t");// 输出天数

if ((getTotleDay + j) % 7 == 0) {// 7天换行

System.out.println();

}

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值