package com.javase;
import java.util.Scanner;
/**
* 输入年月,将输出出日历表(从1900.1.1开始计算总天数)
*/
public class Calendar {
public static void main(String[] args) {
while (true){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
generateCalendar(month,year);
}
}
/**
* 为用户提供一个API接口
* @param month
* @param year
*/
public static void generateCalendar(int month,int year){
int sum=0;
sum=countTotalDays(sum,year,month);
printCalendar(sum,year,month);
}
/**
* 计算从1900.1.1到输入月份一共多少天
* @param sum
* @param year
* @param month
* @return
*/
public static int countTotalDays(int sum,int year,int month){
/**
* 按年计算1900.1.1到输入年份的1.1一共有多少天(分闰年和平年)
*/
for(int i=1900;i<year;i++) {
if(isR(i)) {
sum+=366;
}else {
sum+=365;
}
}
System.out.println(sum);
/**
* 按月计算今年的1.1号到输入月份的1号一共有多少天
* 二月分闰年(29)和平年(28),大月31天,小月30天
*/
for(int j=1;j<month;j++) {
if(j==2) {
if(isR(year)){
sum+=29;
}else {
sum+=28;
}
}else {
if(j==4||j==6||j==9||j==11){
sum+=30;
}else {
sum+=31;
}
}
}
sum+=1;
System.out.println(sum);
return sum;
}
/**
* 获取输入月份具体多少天
* @param year
* @param month
* @return
*/
public static int getMonthDays(int year,int month){
//获取30天月份
switch (month) {
case 4:
case 6:
case 9:
case 11:
return 30;
//获取2月月份天数,调用上面方法,若满足条件则返回29天,否则返回28天
case 2:
if(isR(year)){
return 29;
}else{
return 28;
}
//若都不满足条件,则返回31天
default:
return 31;
}
}
/**
* 判断是否闰年
* @param year
* @return
*/
public static boolean isR(int year){
//判断是否为闰年
if(year%4==0&&year%100!=0||year%400==0){
//是闰年
return true;
}else{
//不是闰年
return false;
}
}
/**
* 输出日历
* @param sum
* @param year
* @param month
*/
public static void printCalendar(int sum,int year,int month){
int wekday=sum%7;
System.out.println("SUN\tMON\tTUE\tWED\tTHU\tFRI\tSAT");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
int monthDays=getMonthDays(year,month);
for(int i=1;i<=monthDays;i++) {
if(sum%7==6) {
System.out.print(i+"\n");
}else {
System.out.print(i+"\t");
}
sum++;
}
System.out.println("\n"+"************************************"+"\n");
}
}
输入年月 输出日历表
最新推荐文章于 2023-04-08 20:35:42 发布