日历类显示多一行

import java.util.*;
import java.io.*;
public class MyCalendar {
public void display(int yearnum,int monthnum){
GregorianCalendar gc=new GregorianCalendar();
gc.set(yearnum,monthnum,1);
int daycount=0;
int i;
int j=1;
switch (monthnum+1) {
case 1: daycount=31;break;
case 3:daycount=31;break;
case 5:daycount=31;break;
case 7:daycount=31;break;
case 8:daycount=31;break;
case 10:daycount=31;break;
case 12:daycount=31;break;
case 2:daycount=29;break;
case 4:daycount=30;break;
case 6:daycount=30;break;
case 9:daycount=30;break;
case 11:daycount=30;break;
}//得到本月的天数
int weekfist=gc.get(Calendar.DAY_OF_WEEK)-1;//得到第一天是星期几
System.out.println("日 一 二 三 四 五 六");
for(i=0;i<(daycount+weekfist-1);i++){
if(i<weekfist){ System.out.print(" "); }//刚开始的时候不显示
if(i>=weekfist){
if(j<10){System.out.print(j+" ");j=j+1;}
if(j>=10){System.out.print(j+" "); j=j+1;}
}
if((i+1)%7==0&&i!=0)System.out.println();//如果是7个字符就换行
}//for end

}//end display
public static void main(String[] args) throws IOException {
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
System.out.print("请输入年份");
int yearnum=Integer.parseInt(br.readLine());
System.out.print("请输入月份");
int monthnum=Integer.parseInt(br.readLine())-1;
System.out.println("\t \t <"+yearnum+"年"+(monthnum+1)+"月>");
MyCalendar mc=new MyCalendar();
mc.display(yearnum,monthnum);
}//end main

}




这是运行的结果
请输入年份2007
请输入月份10
<2007年10月>
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

14不应该在第二行输出,

原文地址:https://www.cnblogs.com/lan0725/p/1873990.html