j2se日历输出(java日历)任意年份

来源:互联网 发布:navicat for mysql 11 编辑:程序博客网 时间:2024/06/02 14:52

java万年历源代码!!!!!!!!!任意年份

import java.util.Scanner;


public class Wnl {
/**
* @param args
*/
public static int year; // 年份
public static int month; // 月份
//构造函数
public Wnl() {
Scanner input = new Scanner(System.in);


System.out.println("输入您要的年份:");
year = input.nextInt();
System.out.println("输入您要的月份:");
month = input.nextInt();


if (!isYear(year)) { // 判断是不是有效年 
System.out.println("年份输入有误,请重新输入") ;
Wnl wnl = new Wnl();
}
if (!isMonth(month)) { // 判断是不是有效月份
System.out.println("月份输入有误,请重新输入");
Wnl wnl = new Wnl();
}
display(year, month);//输出日历
}


// mian函数
public static void main(String[] args) {
Wnl wnl = new Wnl();   //新建一个万年历对象
}


// 判断是不是有效年
private static boolean isYear(int year) {
boolean flag = false;


if (year >= 1900) {
flag = true;
}
return flag;


}


// 判断是不是闰年
private boolean isLeapYear(int year) {
boolean flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;


}


// 判断是不是有效月份
private static boolean isMonth(int month) {


boolean flag = false;


if (month >= 0 && month <= 12) {
flag = true;
}
return flag;


}


// 求出月份的天数
private int days(int year, int month) {
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;


case 2:
if (isLeapYear(year)) {
days = 29;
break;
} else {
days = 28;
break;
}
}


return days;
}


// 求出到每年的天数
private int daysOfYear(int year) {
int days = 365;
if (isLeapYear(year))
days = 366;
return days;
}


// 求出到目标前一年的天数
private int daysYear(int year) {
int count = 0;
int day = 0;
for (int i = 1900; i < year; i++) {
day = daysOfYear(i);
count += day;
}


return count;
}


// 到目标年 内 1月1 到 前一个月的天数
private int daysMonth(int year, int month) {


int days = 0;
int count = 0;
if (month > 0)
for (int i = 1; i < month; i++) {
days = days(year, i);
count += days;
}
return count;
}


// 判断目标月 第一天是星期几
private int weekOfMonth(int year, int month) {
int day1 = daysYear(year);


int day2 = daysMonth(year, month);
// System.out.println(day1+"   "+day2);
// System.out.println("到前一月的天数为:" + (day1 + day2));
int week = (day1 + day2 + 1) % 7; // 求当月第一天是星期几
return week;
}


// 显示日历
private void display(int year, int month) {
System.out
.println("***************************************************");
System.out.println("************************万年历*********************");
System.out.println("周日\t" + "周一\t" + "周二\t" + "周三\t" + "周四\t" + "周五 \t"
+ "周六 \t ");
int week = weekOfMonth(year, month); // 获得当月第一天的星期
// System.out.println("第一天为星期:" + week);
int days = days(year, month); // 获得当月月的天数
// System.out.println("当月天数为:" + days);
for (int i = 0; i < week; i++)
// 输出空格
System.out.print("\t");


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


if (week == 6) {
if (i < 10)
System.out.println("0" + i + "\t");
else
System.out.println(i + "\t");
}


else {
if (i < 10)
System.out.print("0" + i + "\t");
else
System.out.print(i + "\t");
}
week++;
week = week % 7;


}


}


}
原创粉丝点击