package com.whsxt.methodoneyear;
import java.util.Scanner;
/**
* 万年历(方法封装)
* @author admin
*
*/
public class CalendarTest03 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 输入年
System.out.println("请输入你要查找的年:");
int year = input.nextInt();
//输入月
System.out.println("请输入你要查找的月:");
int month = input.nextInt();
// 1计算年的总数和月的总天数
// 1.1 计算年的总天数
int yearDays = getYeardays(year);
// 1.2 获取[year年1月, year年month月)之间的总天数
int monthDays = getMonthDays(year, month);
// 计算year年month月总天数
int nowYearMonth = getNowYearMonth(year, month);
//计算year年month月的月份输出格式
viewYearMonth(yearDays+monthDays, nowYearMonth);
}
public static void viewYearMonth(int allYearmonth,int nowYearMonth) {
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");
int temp = (allYearmonth) % 7 ;
for (int i = 0; i < temp; i++) {
System.out.print("\t");
}
if(temp == 7)
{
System.out.println();
}
for (int i = 1; i <= nowYearMonth; i++) {
System.out.print(i + "\t");
// 当temp+i的结果为7的倍数时,执行换行操作
if ((temp + i) % 7 == 0) {
System.out.println();
}
}
}
/**
* 获取[year年1月, year年month月)之间的总天数
* @param year
* @param month
* @return 返回[year年1月, year年month月)之间的总天数
*/
public static int getMonthDays(int year,int month) {
int monthDays = 0; // 计算月的总天数
for (int i = 1; i < month; i++) {
monthDays += getNowYearMonth(year, i);
}
return monthDays;
}
/**
* 计算当前年的月的总天数
* @param year
* @param month
* @return 返回当前月份天数
*/
public static int getNowYearMonth(int year,int month) {
int monthday = 0; // 计算当前月的总天数
switch (month) {
case 2:
if(isRunYear(year))
{
monthday = 29;// 闰年的总天数
}
else {
monthday = 28; // 平年的总天数
}
break;
case 4:
case 6:
case 9:
case 11:
monthday = 30; //小月30天
break;
default:
monthday = 31;// 大月31天
break;
}
return monthday;
}
/**
* 判断是否是闰年
* @param year 接收用户输入的年
* @return 返回一个boolean类型
*/
public static boolean isRunYear(int year) {
if((year %4 == 0 && year % 100 != 0) || year % 400 == 0)
{
return true;
}
else {
return false;
}
}
/**
* 计算年的总天数
* @param year 接收用户输入的年
* @return 返回年的总天数
*/
public static int getYeardays(int year) {
int yearDays = 0;// 计算年的总天数
for (int i = 1900; i < year; i++) {// 不包括自己那一年
if (isRunYear(i)) {
yearDays += 366;// 是闰年
}
else {
yearDays += 365;// 是平年
}
}
return yearDays;
}
}
java_万年历(用方法封装),精简版
最新推荐文章于 2022-09-28 21:22:14 发布