public static int getTotalNumberOfDays(int year,int month) {
int totalNumberOfDays = 0;
for (int i = 1800; i < year; i++)
{
if (i%4==0&&i%100!=0||i%400==0)
{//闰年
totalNumberOfDays += 366;
}
else {
totalNumberOfDays += 365;
}
}
for (int i = 1; i <month; i++) {
totalNumberOfDays+= getNumberOfDaysInMonth(year,i);
}
return totalNumberOfDays;
}
计算所输入的某月的天数
public static int getNumberOfDaysInMonth(int year,int month){
int daysInMonth;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
daysInMonth=31;
}else if(month==2){
if((year%4==0&&year%100==0)||year%400==0){
daysInMonth=29;
}else
daysInMonth=28;
}else {
daysInMonth = 30;
}
return daysInMonth;
}
import java.util.Scanner;
public class Cal {
public static void main(String[] args){
int startDay1800=3;
int getStartDay;
int totalNumberOfDays;
int daysInMonth;
int n=0;
//读取
Scanner input=new Scanner(System.in);
//键盘输入年份
System.out.print("Enter full year(e.g..2011):");
int year=input.nextInt();
//键盘输入月份
System.out.print("Enter month in number between 1 and 12:");
int month=input.nextInt();
//打印
//打印标题
printMonthTitle(month);
System.out.println(" "+year);
System.out.println("---------------------------");
System.out.println("Sun"+"\t"+"Mon"+"\t"+"Tue"+"\t"+"Wed"+"\t"+"Thu"+"\t"+"Fri"+"\t"+"Sat");
//打印日历内容
//输出到1800年的总天数
totalNumberOfDays=getTotalNumberOfDays(year,month)+1;
daysInMonth=getNumberOfDaysInMonth(year,month);
getStartDay=(totalNumberOfDays%7+(startDay1800-1))%7;
n=getStartDay;
for(int m=0;m<getStartDay;m++){
System.out.print("\t");
}
for(int day=1;day<=daysInMonth;day++) {
System.out.print(day+"\t");
n++;
if (n % 7 == 0) {
System.out.println();
}
}
}
//打印标题
public static void printMonthTitle(int n){
String month=null;
switch(n){
case 1:month="January";break;
case 2:month="February";break;
case 3:month="March";break;
case 4:month="April";break;
case 5:month="May";break;
case 6:month="June";break;
case 7:month="July";break;
case 8:month="August";break;
case 9:month="September";break;
case 10:month="October";break;
case 11:month="November";break;
case 12:month="December";break;
}
System.out.print("\t"+"\t"+month);
}
//总天数
public static int getTotalNumberOfDays(int year,int month) {
int totalNumberOfDays = 0;
for (int i = 1800; i < year; i++)
{
if (i%4==0&&i%100!=0||i%400==0)
{//闰年
totalNumberOfDays += 366;
}
else {
totalNumberOfDays += 365;
}
}
for (int i = 1; i <month; i++) {
totalNumberOfDays+= getNumberOfDaysInMonth(year,i);
}
return totalNumberOfDays;
}
//月份的天数
public static int getNumberOfDaysInMonth(int year,int month){
int daysInMonth;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
daysInMonth=31;
}else if(month==2){
if((year%4==0&&year%100==0)||year%400==0){
daysInMonth=29;
}else
daysInMonth=28;
}else {
daysInMonth = 30;
}
return daysInMonth;
}
}