A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ziyangfgt 中级黑马   /  2017-6-8 10:39  /  1297 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

日期: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();

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马