今天写一个简单的万年历,主要注重这个思路
import java.util.*;
class B
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("欢迎使用万年历");
System.out.println("请输入年份");
int year=sc.nextInt();
System.out.println("请输入月份");
int month=sc.nextInt();
int sum=0;
//判断年份的差距
for (int i=1900;i<year ;i++ )
{
if (year%400==0||year%4==0&&year%100!=0)
{
sum+=366;
}else
{
sum+=365;
}
}
//判断月份
for (int i=1;i<month ;i++ )
{
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
sum+=31;
break;
case 2:
if (year%400==0||year%4==0&&year%100!=0)
{
sum+=29;
}else
{
sum+=28;
}
break;
default:
sum+=30;
}
}
//求余数
int ys=sum%7;
int space=(ys+1)%7;//空格数
//求输入的月份有多少天
int days=0;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if (year%400==0||year%4==0&&year%100!=0)
{
days=29;
}else
{
days=28;
}
break;
default:
days=30;
}
//days 是当前月份的天数
System.out.println("日\t一\t二\t三\t四\t五\t六");
//先输出空格
for(int i=0;i<space;i++)
{
System.out.print("\t");
}
//输出全部的天数
for(int i=1;i<=days;i++)
{
System.out.print(i+"\t");
if((i+space)%7==0)
{
System.out.println();
}
}
}
}