黑马程序员技术交流社区

标题: 用Java实现日历的输出 [打印本页]

作者: ziyangfgt    时间: 2017-6-8 10:39
标题: 用Java实现日历的输出
日期:2016-12-4 作者:刘东山 浏览:145次 评论:0条 


要实现以上的一个日历输出

在开始之前先要判断是否是闰年

public static boolean isleapyear(int y){

return ((y%4==0&&y%100!=0)||(y%400==0));

}

可以看到在每次输出一个月份的时候头部是没有变化的

public static void printweek(){

System.out.println("=======================================================");

System.out.println("日一二三四五六");

}

然后在输出每个月份的时候需要知道每个月的第一天是星期几

public static int firstday(int y){

long n=y*365;

for(int i=1;i<y;i++)

if(isleapyear(i))

n+=1;

return (int) n%7;

}

在输入一个年份的时候乘以365,然后在后面判断假如是闰年就在原来的总数上加一,最后除以7,就可以确定一月份的第一天。

每个月的天数不是固定了,所以需要判断每个月的天数

public static int getmonthday(int m){

switch(m){

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

case 4:

case 6:

case 9:

case 11:

return 30;

case 2:

if(isleapyear(year))

return 29;

else

return 28;

default:

return 0;

}

}



开始输出每个月份的日期,并判断,每月开始是星期几

public static void printmonth(){

for(int m=1;m<=12;m++){

System.out.println(m+"月");

printweek();

for(int j=1;j<=weekday;j++){

System.out.print("");

}

int monthday=getmonthday(m);

for(int d=1;d<=monthday;d++){

if(d<10)

System.out.print(d+"");

else

System.out.print(d+"");

weekday=(weekday+1)%7;

if(weekday==0)

System.out.println();

}

System.out.println('\n');

}

}

最后再添加一个主方法就完成了一个简单的日历

public static void main(String[] args) throws IOException{

System.out.print("请输入一个年份:");

Scannerin=new Scanner(System.in);

String s=in.nextLine();

year=Integer.parseInt(s);

weekday=firstday(year);

System.out.println("\n"+year+"年");

printmonth();

}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2