思路:求每月第一天是星期几,然后递归
package demo;
import java.util.Scanner;
public class demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int next_year=in.nextInt();
System.out.println("请输入月份:");
int next_month=in.nextInt();
for(int def_year=1900;def_year<next_year;def_year++){
if((def_year%4==0&&def_year%100!=0)||def_year%400==0){
sum+=366;
}else{
sum+=365;
}
}
for(int i=1;i<next_month;i++){
if(i==2){
if((next_year%4==0&&next_year%100!=0)||next_year%400==0){
sum+=29;
}else{
sum+=28;
}
}else{
if(i==4||i==6||i==9||i==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=1;
int weekday=sum%7;
System.out.println("日 \t一 \t二 \t三 \t四\t五\t六");
for(int i=0;i<weekday;i++){
System.out.print("\t");
}
if(next_month==2){
if(next_year%4==0&&next_year%100!=0||next_year%400==0){
for(int i=1;i<=29;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}else{
for(int i=1;i<=28;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}else{
if(next_month==4||next_month==6||next_month==9||next_month==11){
for(int i=1;i<=30;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}else{
for(int i=1;i<=31;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}
}
}