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