要求:
制作一个日历表(1990-2999),输入年月,输出该月的日历。
import java.util.Scanner;
public class MyCalendar {
public void calendarmenu(){
while (true){
Scanner reader=new Scanner(System.in);
System.out.println("输入年份;1900————2999");
int year=reader.nextInt();
System.out.println("输入月份;1————12");
int month=reader.nextInt();
showCalender(year,month);
System.out.println();
System.out.println("是否继续?n-退出,任意键继续");
if (reader.next().equals("n")){
//reader.close();
break;
}
}
}
public void showCalender(int year,int month){//日历表格
System.out.println("一\t二\t三\t四\t五\t六\t日");
int weekday=getWeekday(year,month,1);
for (int i=1;i<weekday;i++){
System.out.printf("\t");
}
int monthDays =getMonthDays(year,month);
for(int i=1;i<=monthDays;i++){
int k=weekday%7;
if(k==0){
System.out.printf(i+"\n");
}else{
System.out.printf(i+"\t");
}
weekday=weekday+1;
}
}
public int getWeekday(int year,int month,int day){
int weekday=0;
int sumDays=getSumDays(year,month,day);
weekday=sumDays%7;
return weekday;
}
public int getMonthDays(int year,int month){
int monthDays=0;
if (month==4||month==6||month==9||month==11){
monthDays=30;
}else if (month==2){
if (year%4==0&&year%100!=0||year%400==0){
monthDays=29;
}else{
monthDays=28;
}
}else {
monthDays=31;
}
return monthDays;
}
public int getSumDays(int year,int month,int day){
int sumDays=0;
for (int i=1900;i<year;i++){
if (i%4==0&&i%100!=0||i%400==0){
sumDays=sumDays+366;
}else {
sumDays=sumDays+365;
}
}
for (int i=1;i<month;i++){
sumDays=sumDays+getMonthDays(year,i);
}
sumDays=sumDays+day;
return sumDays;
}
}
测试结果:
适合刚入门的小白学习,简单易懂!