package calender;
import java.util.Scanner;
//使用方法来实现日历的打印
public class print {
/**用户输入的年份*/
public static int year=Integer.MIN_VALUE;//定义全局变量可以表示int型的最小值
/**用户输入的月份*/
public static int month=Integer.MIN_VALUE;//定义全局变量可以表示int型的最小值
static int[]day= {31,28,31,30,31,30,31,31,30,31,30,31};//普通月
public static void main(String[] args) {
PrintCalender();//方法的调用
}
//打印日历的方法
public static void PrintCalender() {
//1.让用户输入年份和月份
//2.计算1900-1-1到用户输入年份月份的总天数
/**可以先输入1900到当前月的前一个月末的天数加上输入的天数*/
//2-1计各年的总天数,2-2计算各月的总天数,\
int sum=getSumDayOfYears( year);//得到年份中的天使
sum+=getDayOfMonth( month);//得到月份中的天数
//sum++;//到输入月的月首
PrintMonthTitle();
PrintCalenderContent(sum%7);
}
//3.打印年份和月份
//4,打印月份的标题
private static void PrintMonthTitle() {
String[] monthNames={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
System.out.println(year+"\t"+monthNames[month-1]);
System.out.print("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
}
//5.根据某月一日是星期几答应日历的内容
private static void PrintCalenderContent(int dayofweek)
{
//day of week 从0到6
int sepcount=0;
if(dayofweek==0)
{sepcount=6;}
else { sepcount=dayofweek-1;}
//分隔符的数量
for(int i=0;i<sepcount;i++)
{
System.out.print("\t");
}
for(int i=0;i<day[month-1];i++)
{
System.out.print(i+1);//输入天数
if((dayofweek+i)%7==0)//周日
{
System.out.println();
}
else
System.out.println("\n");
}
}
/**1.用来进行输入*/
private static void WAY1() {
Scanner in=new Scanner(System.in);
System.out.println("请输入相应的年份");
year=in.nextInt();//接收数据
System.out.println("请输入相应的月份");
month=in.nextInt();
in.close();//相对专业的做法,用来节省空间
in=null;
}
/**2.用来计算1900到year年的总天数*/
private static int getSumDayOfYears(int year) {
//判断年份是否正确输入if(year==Integer.MIN_VALUE)
{
System.out.println("年份输入错误,请重新输入");
WAY1();
}
//如果用户没有正确输入,则可以调用way1使用户重复输入
int sum=0;
for(int i=1900;i<year;i++)
{
sum=sum+365;//每一年累加365天
if(isLeapyear(i))
{
sum++;//闰年多加一天
}
return sum;
}
return sum;
}
/**计算year一月一号到year年month-1月总天数的方法*/
private static int getDayOfMonth(int month)
{
int sum=0;
if(month>12||month<1)
{
System.out.println("输入错误");
}
for(int i=0;i<month-1;i++)
{
sum=sum+day[i];
}
if((isLeapyear(year))&&month>=3)//如果是三月后的闰年,SUM又要+1
{sum++;}
return sum;
}
/**把是否闰年封装成方法
* 是闰年返回true*/
private static boolean isLeapyear(int year) {
return year%400==0||year%4==0&&year%100!=0;
}
}
2018/1/15
java