import java.util.Scanner;
/*
* 1 判断输入的年是平年还是闰年
* 2 参照年月1900-1-1是星期一
* 3 输入的年份月份至参照年月相差多少天
* 4 判断月的第一天是星期几
* 5 输出万年历
* */
//打印万年历
public class wannianli {
//判断某年是闰年还是平年的方法
public static boolean panduan(int year)
{
if((year%4==0&&year%100!=0)||year%400==0)
return true;
else
return false;
}
//判断某年的某月有多少天
public static int mouthdays(int year,int mouth)
{
int days=31;//用来记录某月有多少天 默认每月都是大月31天
switch(mouth)
{
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if(panduan(year))
days = 29;
else
days = 28;
break;
}
return days;
}
//参照年月 1900-1-1是星期一,计算输入的年份的某月到参照年月一个过了多少天
public static long getTotaldays(int year,int mouth)
{
long totaldays=0;
for(int i=1900; i<year; i++)
{
if(panduan(i)) //i是某年
totaldays+=366;
else
totaldays+=365;
}
for(int m=1; m<mouth; m++)
{
totaldays+=mouthdays(year,m);//m是某月
}
return totaldays;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);//建立输入对象
int year;//输入年份
int mouth;//输入月份
long day; //用于记录月的第一天
long totaldays;//输入的年份的某月到参照年月一个过了多少天
System.out.println("*********欢迎使用万年历*******");
System.out.println("请输入年份: ");
year = in.nextInt();
System.out.println("请输入月份: ");
mouth = in.nextInt();
System.out.println("\t您输入的年份是:"+year+"年"+mouth+"月");
//判断此年是闰年还是平年
if(panduan(year))
System.out.println(year+"是闰年。");
else
System.out.println(year+"是平年。");
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
totaldays = getTotaldays(year,mouth);
totaldays++;//这个月的第一天
day = totaldays%7;//day为多少这个月的第一天就是星期几 也就是输出多少个空格
int counter=0;//用于判断换行
for(int i=0; i<day; i++)
{
System.out.print(" \t");
counter++;
}
for(int y=1; y<=mouthdays(year,mouth); y++)
{
System.out.print(y+"\t");
counter++;
if(counter%7==0)
System.out.println();
}
}
}
java中的命名约定
1 变量名,方法名 首单词小写,其余单词的的首字母大写
2 接口名 类名 所有单词 的第一个字母大写
3 常量 完全大写
4 包 全部单词小写
注释 用途 方便阅读